This revision was automatically updated to reflect the committed changes.
Closed by commit rL343251: [clang][ubsan][NFC] Slight test cleanup in 
preparation for D50901 (authored by lebedevri, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D52589?vs=167245&id=167367#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D52589

Files:
  cfe/trunk/test/CodeGen/catch-implicit-integer-conversions-basics.c
  cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics-negatives.c
  cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics.c
  cfe/trunk/test/CodeGen/catch-implicit-integer-truncations.c

Index: cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics.c
===================================================================
--- cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics.c
+++ cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics.c
@@ -16,116 +16,100 @@
 
 // CHECK-LABEL: @convert_unsigned_int_to_unsigned_int
 unsigned int convert_unsigned_int_to_unsigned_int(unsigned int x) {
-  // CHECK: }
 #line 100
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_unsigned_char
 unsigned char convert_unsigned_char_to_unsigned_char(unsigned char x) {
-  // CHECK: }
 #line 200
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_signed_int
 signed int convert_signed_int_to_signed_int(signed int x) {
-  // CHECK: }
 #line 300
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_signed_char
 signed char convert_signed_char_to_signed_char(signed char x) {
-  // CHECK: }
 #line 400
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_unsigned_char
 unsigned char convert_unsigned_int_to_unsigned_char(unsigned int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 500
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_unsigned_int
 unsigned int convert_unsigned_char_to_unsigned_int(unsigned char x) {
-  // CHECK: }
 #line 600
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_signed_int
 signed int convert_unsigned_char_to_signed_int(unsigned char x) {
-  // CHECK: }
 #line 700
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_signed_int
 signed int convert_signed_char_to_signed_int(signed char x) {
-  // CHECK: }
 #line 800
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_signed_int
 signed int convert_unsigned_int_to_signed_int(unsigned int x) {
-  // CHECK: }
 #line 900
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_unsigned_int
 unsigned int convert_signed_int_to_unsigned_int(signed int x) {
-  // CHECK: }
 #line 1000
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_unsigned_char
 unsigned char convert_signed_int_to_unsigned_char(signed int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1100_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1100
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_unsigned_char
 unsigned char convert_signed_char_to_unsigned_char(signed char x) {
-  // CHECK: }
 #line 1200
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_signed_char
 signed char convert_unsigned_char_to_signed_char(unsigned char x) {
-  // CHECK: }
 #line 1300
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_unsigned_int
 unsigned int convert_signed_char_to_unsigned_int(signed char x) {
-  // CHECK: }
 #line 1400
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_signed_char
 signed char convert_unsigned_int_to_signed_char(unsigned int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1500_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1500
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_signed_char
 signed char convert_signed_int_to_signed_char(signed int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1600_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1600
   return x;
 }
Index: cfe/trunk/test/CodeGen/catch-implicit-integer-truncations.c
===================================================================
--- cfe/trunk/test/CodeGen/catch-implicit-integer-truncations.c
+++ cfe/trunk/test/CodeGen/catch-implicit-integer-truncations.c
@@ -6,16 +6,16 @@
 // CHECK-SANITIZE-ANYRECOVER: @[[UNSIGNED_INT:.*]] = {{.*}} c"'unsigned int'\00" }
 // CHECK-SANITIZE-ANYRECOVER: @[[UNSIGNED_CHAR:.*]] = {{.*}} c"'unsigned char'\00" }
 
-// CHECK-SANITIZE-ANYRECOVER: @[[LINE_100:.*]] = {{.*}}, i32 100, i32 10 }, {{.*}}* @[[UNSIGNED_INT]], {{.*}}* @[[UNSIGNED_CHAR]], i8 0 }
+// CHECK-SANITIZE-ANYRECOVER: @[[LINE_100_TRUNCATION:.*]] = {{.*}}, i32 100, i32 10 }, {{.*}}* @[[UNSIGNED_INT]], {{.*}}* @[[UNSIGNED_CHAR]], i8 0 }
 // CHECK-SANITIZE-ANYRECOVER: @[[SIGNED_INT:.*]] = {{.*}} c"'int'\00" }
-// CHECK-SANITIZE-ANYRECOVER: @[[LINE_200:.*]] = {{.*}}, i32 200, i32 10 }, {{.*}}* @[[SIGNED_INT]], {{.*}}* @[[UNSIGNED_CHAR]], i8 0 }
+// CHECK-SANITIZE-ANYRECOVER: @[[LINE_200_TRUNCATION:.*]] = {{.*}}, i32 200, i32 10 }, {{.*}}* @[[SIGNED_INT]], {{.*}}* @[[UNSIGNED_CHAR]], i8 0 }
 // CHECK-SANITIZE-ANYRECOVER: @[[SIGNED_CHAR:.*]] = {{.*}} c"'signed char'\00" }
-// CHECK-SANITIZE-ANYRECOVER: @[[LINE_300:.*]] = {{.*}}, i32 300, i32 10 }, {{.*}}* @[[UNSIGNED_INT]], {{.*}}* @[[SIGNED_CHAR]], i8 0 }
-// CHECK-SANITIZE-ANYRECOVER: @[[LINE_400:.*]] = {{.*}}, i32 400, i32 10 }, {{.*}}* @[[SIGNED_INT]], {{.*}}* @[[SIGNED_CHAR]], i8 0 }
+// CHECK-SANITIZE-ANYRECOVER: @[[LINE_300_TRUNCATION:.*]] = {{.*}}, i32 300, i32 10 }, {{.*}}* @[[UNSIGNED_INT]], {{.*}}* @[[SIGNED_CHAR]], i8 0 }
+// CHECK-SANITIZE-ANYRECOVER: @[[LINE_400_TRUNCATION:.*]] = {{.*}}, i32 400, i32 10 }, {{.*}}* @[[SIGNED_INT]], {{.*}}* @[[SIGNED_CHAR]], i8 0 }
 
 // CHECK-SANITIZE-ANYRECOVER: @[[UINT32:.*]] = {{.*}} c"'uint32_t' (aka 'unsigned int')\00" }
 // CHECK-SANITIZE-ANYRECOVER: @[[UINT8:.*]] = {{.*}} c"'uint8_t' (aka 'unsigned char')\00" }
-// CHECK-SANITIZE-ANYRECOVER: @[[LINE_500:.*]] = {{.*}}, i32 500, i32 10 }, {{.*}}* @[[UINT32]], {{.*}}* @[[UINT8]], i8 0 }
+// CHECK-SANITIZE-ANYRECOVER: @[[LINE_500_TRUNCATION:.*]] = {{.*}}, i32 500, i32 10 }, {{.*}}* @[[UINT32]], {{.*}}* @[[UINT8]], i8 0 }
 
 // ========================================================================== //
 // The expected true-positives. These are implicit conversions, and they truncate.
@@ -30,8 +30,8 @@
   // CHECK-SANITIZE: [[HANDLER_IMPLICIT_CONVERSION]]:
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTSRC:.*]] = zext i32 %[[SRC]] to i64, !nosanitize
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTDST:.*]] = zext i8 %[[DST]] to i64, !nosanitize
-  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_100]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
-  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_100]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_100_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_100_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
   // CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
   // CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
   // CHECK-SANITIZE: [[CONT]]:
@@ -50,8 +50,8 @@
   // CHECK-SANITIZE: [[HANDLER_IMPLICIT_CONVERSION]]:
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTSRC:.*]] = zext i32 %[[SRC]] to i64, !nosanitize
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTDST:.*]] = zext i8 %[[DST]] to i64, !nosanitize
-  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_200]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
-  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_200]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_200_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_200_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
   // CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
   // CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
   // CHECK-SANITIZE: [[CONT]]:
@@ -70,8 +70,8 @@
   // CHECK-SANITIZE: [[HANDLER_IMPLICIT_CONVERSION]]:
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTSRC:.*]] = zext i32 %[[SRC]] to i64, !nosanitize
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTDST:.*]] = zext i8 %[[DST]] to i64, !nosanitize
-  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_300]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
-  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_300]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_300_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_300_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
   // CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
   // CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
   // CHECK-SANITIZE: [[CONT]]:
@@ -90,8 +90,8 @@
   // CHECK-SANITIZE: [[HANDLER_IMPLICIT_CONVERSION]]:
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTSRC:.*]] = zext i32 %[[SRC]] to i64, !nosanitize
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTDST:.*]] = zext i8 %[[DST]] to i64, !nosanitize
-  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_400]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
-  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_400]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_400_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_400_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
   // CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
   // CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
   // CHECK-SANITIZE: [[CONT]]:
@@ -117,8 +117,8 @@
   // CHECK-SANITIZE: [[HANDLER_IMPLICIT_CONVERSION]]:
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTSRC:.*]] = zext i32 %[[SRC]] to i64, !nosanitize
   // CHECK-SANITIZE-ANYRECOVER-NEXT: %[[EXTDST:.*]] = zext i8 %[[DST]] to i64, !nosanitize
-  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
-  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-NORECOVER-NEXT: call void @__ubsan_handle_implicit_conversion_abort(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
+  // CHECK-SANITIZE-RECOVER-NEXT: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500_TRUNCATION]] to i8*), i64 %[[EXTSRC]], i64 %[[EXTDST]]){{.*}}, !nosanitize
   // CHECK-SANITIZE-TRAP-NEXT: call void @llvm.trap(){{.*}}, !nosanitize
   // CHECK-SANITIZE-UNREACHABLE-NEXT: unreachable, !nosanitize
   // CHECK-SANITIZE: [[CONT]]:
@@ -139,16 +139,14 @@
 unsigned char explicit_conversion_interference0(unsigned int c) {
   // CHECK-SANITIZE: %[[ANYEXT:.*]] = zext i8 %[[DST:.*]] to i16, !nosanitize
   // CHECK-SANITIZE: call
-  // CHECK: }
   return (unsigned short)c;
 }
 
 // Implicit truncation before explicit truncation.
 // CHECK-LABEL: @explicit_conversion_interference1
 unsigned char explicit_conversion_interference1(unsigned int c) {
   // CHECK-SANITIZE: %[[ANYEXT:.*]] = zext i16 %[[DST:.*]] to i32, !nosanitize
   // CHECK-SANITIZE: call
-  // CHECK: }
   unsigned short b;
   return (unsigned char)(b = c);
 }
@@ -164,160 +162,136 @@
 __attribute__((no_sanitize("undefined"))) unsigned char blacklist_0(unsigned int src) {
   // We are not in "undefined" group, so that doesn't work.
   // CHECK-SANITIZE: call
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @blacklist_1
 __attribute__((no_sanitize("integer"))) unsigned char blacklist_1(unsigned int src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @blacklist_2
 __attribute__((no_sanitize("implicit-conversion"))) unsigned char blacklist_2(unsigned int src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @blacklist_3
 __attribute__((no_sanitize("implicit-integer-truncation"))) unsigned char blacklist_3(unsigned int src) {
-  // CHECK: }
   return src;
 }
 
 // Explicit truncating conversions.
 // ========================================================================== //
 
 // CHECK-LABEL: @explicit_unsigned_int_to_unsigned_char
 unsigned char explicit_unsigned_int_to_unsigned_char(unsigned int src) {
-  // CHECK: }
   return (unsigned char)src;
 }
 
 // CHECK-LABEL: @explicit_signed_int_to_unsigned_char
 unsigned char explicit_signed_int_to_unsigned_char(signed int src) {
-  // CHECK: }
   return (unsigned char)src;
 }
 
 // CHECK-LABEL: @explicit_unsigned_int_to_signed_char
 signed char explicit_unsigned_int_to_signed_char(unsigned int src) {
-  // CHECK: }
   return (signed char)src;
 }
 
 // CHECK-LABEL: @explicit_signed_int_to_signed_char
 signed char explicit_signed_int_to_signed_char(signed int src) {
-  // CHECK: }
   return (signed char)src;
 }
 
 // Explicit NOP conversions.
 // ========================================================================== //
 
 // CHECK-LABEL: @explicit_unsigned_int_to_unsigned_int
 unsigned int explicit_unsigned_int_to_unsigned_int(unsigned int src) {
-  // CHECK: }
   return (unsigned int)src;
 }
 
 // CHECK-LABEL: @explicit_signed_int_to_signed_int
 signed int explicit_signed_int_to_signed_int(signed int src) {
-  // CHECK: }
   return (signed int)src;
 }
 
 // CHECK-LABEL: @explicit_unsigned_char_to_signed_char
 unsigned char explicit_unsigned_char_to_signed_char(unsigned char src) {
-  // CHECK: }
   return (unsigned char)src;
 }
 
 // CHECK-LABEL: @explicit_signed_char_to_signed_char
 signed char explicit_signed_char_to_signed_char(signed char src) {
-  // CHECK: }
   return (signed char)src;
 }
 
 // upcasts.
 // ========================================================================== //
 
 // CHECK-LABEL: @unsigned_char_to_unsigned_int
 unsigned int unsigned_char_to_unsigned_int(unsigned char src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @signed_char_to_unsigned_int
 unsigned int signed_char_to_unsigned_int(signed char src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @unsigned_char_to_signed_int
 signed int unsigned_char_to_signed_int(unsigned char src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @signed_char_to_signed_int
 signed int signed_char_to_signed_int(signed char src) {
-  // CHECK: }
   return src;
 }
 
 // Explicit upcasts.
 // ========================================================================== //
 
 // CHECK-LABEL: @explicit_unsigned_char_to_unsigned_int
 unsigned int explicit_unsigned_char_to_unsigned_int(unsigned char src) {
-  // CHECK: }
   return (unsigned int)src;
 }
 
 // CHECK-LABEL: @explicit_signed_char_to_unsigned_int
 unsigned int explicit_signed_char_to_unsigned_int(signed char src) {
-  // CHECK: }
   return (unsigned int)src;
 }
 
 // CHECK-LABEL: @explicit_unsigned_char_to_signed_int
 signed int explicit_unsigned_char_to_signed_int(unsigned char src) {
-  // CHECK: }
   return (signed int)src;
 }
 
 // CHECK-LABEL: @explicit_signed_char_to_signed_int
 signed int explicit_signed_char_to_signed_int(signed char src) {
-  // CHECK: }
   return (signed int)src;
 }
 
 // conversions to to boolean type are not counted as truncation.
 // ========================================================================== //
 
 // CHECK-LABEL: @unsigned_int_to_bool
 _Bool unsigned_int_to_bool(unsigned int src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @signed_int_to_bool
 _Bool signed_int_to_bool(signed int src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @explicit_unsigned_int_to_bool
 _Bool explicit_unsigned_int_to_bool(unsigned int src) {
-  // CHECK: }
   return (_Bool)src;
 }
 
 // CHECK-LABEL: @explicit_signed_int_to_bool
 _Bool explicit_signed_int_to_bool(signed int src) {
-  // CHECK: }
   return (_Bool)src;
 }
 
@@ -328,48 +302,41 @@
 
 // CHECK-LABEL: @explicit_voidptr_to_unsigned_char
 unsigned char explicit_voidptr_to_unsigned_char(void *src) {
-  // CHECK: }
   return (unsigned char)src;
 }
 
 // CHECK-LABEL: @explicit_voidptr_to_signed_char
 signed char explicit_voidptr_to_signed_char(void *src) {
-  // CHECK: }
   return (signed char)src;
 }
 
 // Implicit truncating conversions from floating-point may result in precision loss.
 // ========================================================================== //
 
 // CHECK-LABEL: @float_to_unsigned_int
 unsigned int float_to_unsigned_int(float src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @float_to_signed_int
 signed int float_to_signed_int(float src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @double_to_unsigned_int
 unsigned int double_to_unsigned_int(double src) {
-  // CHECK: }
   return src;
 }
 
 // CHECK-LABEL: @double_to_signed_int
 signed int double_to_signed_int(double src) {
-  // CHECK: }
   return src;
 }
 
 // Implicit truncating conversions between fp may result in precision loss.
 // ========================================================================== //
 
 // CHECK-LABEL: @double_to_float
 float double_to_float(double src) {
-  // CHECK: }
   return src;
 }
Index: cfe/trunk/test/CodeGen/catch-implicit-integer-conversions-basics.c
===================================================================
--- cfe/trunk/test/CodeGen/catch-implicit-integer-conversions-basics.c
+++ cfe/trunk/test/CodeGen/catch-implicit-integer-conversions-basics.c
@@ -16,116 +16,100 @@
 
 // CHECK-LABEL: @convert_unsigned_int_to_unsigned_int
 unsigned int convert_unsigned_int_to_unsigned_int(unsigned int x) {
-  // CHECK: }
 #line 100
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_unsigned_char
 unsigned char convert_unsigned_char_to_unsigned_char(unsigned char x) {
-  // CHECK: }
 #line 200
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_signed_int
 signed int convert_signed_int_to_signed_int(signed int x) {
-  // CHECK: }
 #line 300
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_signed_char
 signed char convert_signed_char_to_signed_char(signed char x) {
-  // CHECK: }
 #line 400
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_unsigned_char
 unsigned char convert_unsigned_int_to_unsigned_char(unsigned int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_500_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 500
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_unsigned_int
 unsigned int convert_unsigned_char_to_unsigned_int(unsigned char x) {
-  // CHECK: }
 #line 600
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_signed_int
 signed int convert_unsigned_char_to_signed_int(unsigned char x) {
-  // CHECK: }
 #line 700
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_signed_int
 signed int convert_signed_char_to_signed_int(signed char x) {
-  // CHECK: }
 #line 800
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_signed_int
 signed int convert_unsigned_int_to_signed_int(unsigned int x) {
-  // CHECK: }
 #line 900
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_unsigned_int
 unsigned int convert_signed_int_to_unsigned_int(signed int x) {
-  // CHECK: }
 #line 1000
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_unsigned_char
 unsigned char convert_signed_int_to_unsigned_char(signed int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1100_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1100
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_unsigned_char
 unsigned char convert_signed_char_to_unsigned_char(signed char x) {
-  // CHECK: }
 #line 1200
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_char_to_signed_char
 signed char convert_unsigned_char_to_signed_char(unsigned char x) {
-  // CHECK: }
 #line 1300
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_char_to_unsigned_int
 unsigned int convert_signed_char_to_unsigned_int(signed char x) {
-  // CHECK: }
 #line 1400
   return x;
 }
 
 // CHECK-LABEL: @convert_unsigned_int_to_signed_char
 signed char convert_unsigned_int_to_signed_char(unsigned int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1500_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1500
   return x;
 }
 
 // CHECK-LABEL: @convert_signed_int_to_signed_char
 signed char convert_signed_int_to_signed_char(signed int x) {
   // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_1600_TRUNCATION]] to i8*)
-  // CHECK: }
 #line 1600
   return x;
 }
Index: cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics-negatives.c
===================================================================
--- cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics-negatives.c
+++ cfe/trunk/test/CodeGen/catch-implicit-integer-truncations-basics-negatives.c
@@ -0,0 +1,58 @@
+// RUN: %clang_cc1 -fsanitize=implicit-integer-truncation -fsanitize-recover=implicit-integer-truncation -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_implicit_conversion" --check-prefixes=CHECK
+
+// CHECK-DAG: @[[LINE_100_TRUNCATION:.*]] = {{.*}}, i32 100, i32 10 }, {{.*}}, {{.*}}, i8 0 }
+// CHECK-DAG: @[[LINE_300_TRUNCATION:.*]] = {{.*}}, i32 300, i32 10 }, {{.*}}, {{.*}}, i8 0 }
+
+//----------------------------------------------------------------------------//
+// Unsigned case.
+//----------------------------------------------------------------------------//
+
+// CHECK-LABEL: @blacklist_0_convert_unsigned_int_to_unsigned_char
+__attribute__((no_sanitize("undefined"))) unsigned char blacklist_0_convert_unsigned_int_to_unsigned_char(unsigned int x) {
+  // We are not in "undefined" group, so that doesn't work.
+  // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_100_TRUNCATION]] to i8*)
+#line 100
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_1_convert_unsigned_int_to_unsigned_char
+__attribute__((no_sanitize("integer"))) unsigned char blacklist_1_convert_unsigned_int_to_unsigned_char(unsigned int x) {
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_2_convert_unsigned_int_to_unsigned_char
+__attribute__((no_sanitize("implicit-conversion"))) unsigned char blacklist_2_convert_unsigned_int_to_unsigned_char(unsigned int x) {
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_3_convert_unsigned_int_to_unsigned_char
+__attribute__((no_sanitize("implicit-integer-truncation"))) unsigned char blacklist_3_convert_unsigned_int_to_unsigned_char(unsigned int x) {
+  return x;
+}
+
+//----------------------------------------------------------------------------//
+// Signed case.
+//----------------------------------------------------------------------------//
+
+// CHECK-LABEL: @blacklist_0_convert_signed_int_to_signed_char
+__attribute__((no_sanitize("undefined"))) signed char blacklist_0_convert_signed_int_to_signed_char(signed int x) {
+  // We are not in "undefined" group, so that doesn't work.
+  // CHECK: call void @__ubsan_handle_implicit_conversion(i8* bitcast ({ {{{.*}}}, {{{.*}}}*, {{{.*}}}*, i8 }* @[[LINE_300_TRUNCATION]] to i8*)
+#line 300
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_1_convert_signed_int_to_signed_char
+__attribute__((no_sanitize("integer"))) signed char blacklist_1_convert_signed_int_to_signed_char(signed int x) {
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_2_convert_signed_int_to_signed_char
+__attribute__((no_sanitize("implicit-conversion"))) signed char blacklist_2_convert_signed_int_to_signed_char(signed int x) {
+  return x;
+}
+
+// CHECK-LABEL: @blacklist_3_convert_signed_int_to_signed_char
+__attribute__((no_sanitize("implicit-integer-truncation"))) signed char blacklist_3_convert_signed_int_to_signed_char(signed int x) {
+  return x;
+}
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to