@@ -383,6 +383,74 @@ bb0:
383
383
return %4 : $Int8
384
384
}
385
385
386
+ // CHECK-LABEL: sil @string_null_pointer_check :
387
+ // CHECK: %0 = integer_literal $Builtin.Int1, 0
388
+ // CHECK-NEXT: return %0
389
+ // CHECK: } // end sil function 'string_null_pointer_check'
390
+ sil @string_null_pointer_check : $@convention(thin) () -> Builtin.Int1 {
391
+ bb0:
392
+ %0 = string_literal utf8 "hello"
393
+ %1 = builtin "ptrtoint_Word"(%0 : $Builtin.RawPointer) : $Builtin.Word
394
+ %2 = builtin "zextOrBitCast_Word_Int64"(%1 : $Builtin.Word) : $Builtin.Int64
395
+ %3 = integer_literal $Builtin.Int64, 0
396
+ %4 = builtin "cmp_eq_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1
397
+ return %4 : $Builtin.Int1
398
+ }
399
+
400
+ // CHECK-LABEL: sil @string_null_pointer_check_ne :
401
+ // CHECK: %0 = integer_literal $Builtin.Int1, -1
402
+ // CHECK-NEXT: return %0
403
+ // CHECK: } // end sil function 'string_null_pointer_check_ne'
404
+ sil @string_null_pointer_check_ne : $@convention(thin) () -> Builtin.Int1 {
405
+ bb0:
406
+ %0 = string_literal utf8 "hello"
407
+ %1 = builtin "ptrtoint_Word"(%0 : $Builtin.RawPointer) : $Builtin.Word
408
+ %2 = builtin "zextOrBitCast_Word_Int64"(%1 : $Builtin.Word) : $Builtin.Int64
409
+ %3 = integer_literal $Builtin.Int64, 0
410
+ %4 = builtin "cmp_ne_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1
411
+ return %4 : $Builtin.Int1
412
+ }
413
+
414
+ // CHECK-LABEL: sil @string_null_pointer_check_no_integer_literal :
415
+ // CHECK: %4 = builtin "cmp_eq_Int64"(%3 : $Builtin.Int64, %0 : $Builtin.Int64)
416
+ // CHECK-NEXT: return %4
417
+ // CHECK: } // end sil function 'string_null_pointer_check_no_integer_literal'
418
+ sil @string_null_pointer_check_no_integer_literal : $@convention(thin) (Builtin.Int64) -> Builtin.Int1 {
419
+ bb0(%0 : $Builtin.Int64):
420
+ %1 = string_literal utf8 "hello"
421
+ %2 = builtin "ptrtoint_Word"(%1 : $Builtin.RawPointer) : $Builtin.Word
422
+ %3 = builtin "zextOrBitCast_Word_Int64"(%2 : $Builtin.Word) : $Builtin.Int64
423
+ %4 = builtin "cmp_eq_Int64"(%3 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int1
424
+ return %4 : $Builtin.Int1
425
+ }
426
+
427
+ // CHECK-LABEL: sil @string_null_pointer_check_not_zero :
428
+ // CHECK: %4 = builtin "cmp_eq_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64)
429
+ // CHECK-NEXT: return %4
430
+ // CHECK: } // end sil function 'string_null_pointer_check_not_zero'
431
+ sil @string_null_pointer_check_not_zero : $@convention(thin) () -> Builtin.Int1 {
432
+ bb0:
433
+ %0 = string_literal utf8 "hello"
434
+ %1 = builtin "ptrtoint_Word"(%0 : $Builtin.RawPointer) : $Builtin.Word
435
+ %2 = builtin "zextOrBitCast_Word_Int64"(%1 : $Builtin.Word) : $Builtin.Int64
436
+ %3 = integer_literal $Builtin.Int64, 123
437
+ %4 = builtin "cmp_eq_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1
438
+ return %4 : $Builtin.Int1
439
+ }
440
+
441
+ // CHECK-LABEL: sil @string_null_pointer_check_no_string_literal :
442
+ // CHECK: %4 = builtin "cmp_eq_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64)
443
+ // CHECK-NEXT: return %4
444
+ // CHECK: } // end sil function 'string_null_pointer_check_no_string_literal'
445
+ sil @string_null_pointer_check_no_string_literal : $@convention(thin) (Builtin.RawPointer) -> Builtin.Int1 {
446
+ bb0(%0 : $Builtin.RawPointer):
447
+ %1 = builtin "ptrtoint_Word"(%0 : $Builtin.RawPointer) : $Builtin.Word
448
+ %2 = builtin "zextOrBitCast_Word_Int64"(%1 : $Builtin.Word) : $Builtin.Int64
449
+ %3 = integer_literal $Builtin.Int64, 0
450
+ %4 = builtin "cmp_eq_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1
451
+ return %4 : $Builtin.Int1
452
+ }
453
+
386
454
// CHECK-LABEL: sil @convert_thick_to_thin1
387
455
// CHECK-NOT: metatype $@thick C1<Int>.Type
388
456
// CHECK: [[L:%.*]] = metatype $@thin C1<Int>.Type
@@ -490,3 +558,4 @@ bb0(%0 : $Builtin.RawPointer, %1 : $Builtin.Word):
490
558
%3 = builtin "destroyArray"<C1<Int>>(%2 : $@thick C1<Int>.Type, %0 : $Builtin.RawPointer, %1 : $Builtin.Word) : $()
491
559
return %0 : $Builtin.RawPointer
492
560
}
561
+
0 commit comments