brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.9 KiB · b2e6573 Raw
298 lines · c
1// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV0 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V02// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV1 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V13// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV2 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V24// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV3 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V35// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV4 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V46// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV5 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V57// RUN: %clang   -x c   -fsanitize=implicit-integer-sign-change %s -DV6 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V68 9// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV0 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V010// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV1 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V111// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV2 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V212// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV3 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V313// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV4 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V414// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV5 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V515// RUN: %clangxx -x c++ -fsanitize=implicit-integer-sign-change %s -DV6 -o %t && %run %t 2>&1 | FileCheck %s --implicit-check-not="implicit conversion" --check-prefixes=CHECK-V616 17#include <stdint.h>18 19// Test plan:20//  * Two types - int and char21//  * Two signs - signed and unsigned22//  * Square that - we have input and output types.23// Thus, there are total of (2*2)^2 == 16 tests.24// These are all the possible variations/combinations of casts.25// However, not all of them should result in the check.26// So here, we *only* check which should and which should not result in checks.27 28//============================================================================//29// Half of the cases do not need the check.                                   //30//============================================================================//31 32uint32_t negative0_convert_unsigned_int_to_unsigned_int(uint32_t x) {33  return x;34}35 36uint8_t negative1_convert_unsigned_char_to_unsigned_char(uint8_t x) {37  return x;38}39 40int32_t negative2_convert_signed_int_to_signed_int(int32_t x) {41  return x;42}43 44int8_t negative3_convert_signed_char_to_signed_char(int8_t x) {45  return x;46}47 48uint8_t negative4_convert_unsigned_int_to_unsigned_char(uint32_t x) {49  return x;50}51 52uint32_t negative5_convert_unsigned_char_to_unsigned_int(uint8_t x) {53  return x;54}55 56int32_t negative6_convert_unsigned_char_to_signed_int(uint8_t x) {57  return x;58}59 60int32_t negative7_convert_signed_char_to_signed_int(int8_t x) {61  return x;62}63 64void test_negatives() {65  // No bits set.66  negative0_convert_unsigned_int_to_unsigned_int(0);67  negative1_convert_unsigned_char_to_unsigned_char(0);68  negative2_convert_signed_int_to_signed_int(0);69  negative3_convert_signed_char_to_signed_char(0);70  negative4_convert_unsigned_int_to_unsigned_char(0);71  negative5_convert_unsigned_char_to_unsigned_int(0);72  negative6_convert_unsigned_char_to_signed_int(0);73  negative7_convert_signed_char_to_signed_int(0);74 75  // One lowest bit set.76  negative0_convert_unsigned_int_to_unsigned_int(1);77  negative1_convert_unsigned_char_to_unsigned_char(1);78  negative2_convert_signed_int_to_signed_int(1);79  negative3_convert_signed_char_to_signed_char(1);80  negative4_convert_unsigned_int_to_unsigned_char(1);81  negative5_convert_unsigned_char_to_unsigned_int(1);82  negative6_convert_unsigned_char_to_signed_int(1);83  negative7_convert_signed_char_to_signed_int(1);84 85  // All source bits set.86  negative0_convert_unsigned_int_to_unsigned_int((uint32_t)UINT32_MAX);87  negative1_convert_unsigned_char_to_unsigned_char((uint8_t)UINT8_MAX);88  negative2_convert_signed_int_to_signed_int((int32_t)INT32_MAX);89  negative3_convert_signed_char_to_signed_char((int8_t)INT8_MAX);90  negative4_convert_unsigned_int_to_unsigned_char((uint32_t)UINT32_MAX);91  negative5_convert_unsigned_char_to_unsigned_int((uint8_t)UINT8_MAX);92  negative6_convert_unsigned_char_to_signed_int((uint8_t)UINT8_MAX);93  negative7_convert_signed_char_to_signed_int((int8_t)INT8_MAX);94 95  // Source 'sign' bit set.96  negative0_convert_unsigned_int_to_unsigned_int((uint32_t)INT32_MIN);97  negative1_convert_unsigned_char_to_unsigned_char((uint8_t)INT8_MIN);98  negative2_convert_signed_int_to_signed_int((int32_t)INT32_MIN);99  negative3_convert_signed_char_to_signed_char((int8_t)INT8_MIN);100  negative4_convert_unsigned_int_to_unsigned_char((uint32_t)INT32_MIN);101  negative5_convert_unsigned_char_to_unsigned_int((uint8_t)INT8_MIN);102  negative6_convert_unsigned_char_to_signed_int((uint8_t)INT8_MIN);103  negative7_convert_signed_char_to_signed_int((int8_t)INT8_MIN);104}105 106//============================================================================//107// The remaining 8 cases *do* need the check.   //108//============================================================================//109 110int32_t positive0_convert_unsigned_int_to_signed_int(uint32_t x) {111#line 100112  return x;113}114 115uint32_t positive1_convert_signed_int_to_unsigned_int(int32_t x) {116#line 200117  return x;118}119 120uint8_t positive2_convert_signed_int_to_unsigned_char(int32_t x) {121#line 300122  return x;123}124 125uint8_t positive3_convert_signed_char_to_unsigned_char(int8_t x) {126#line 400127  return x;128}129 130int8_t positive4_convert_unsigned_char_to_signed_char(uint8_t x) {131#line 500132  return x;133}134 135uint32_t positive5_convert_signed_char_to_unsigned_int(int8_t x) {136#line 600137  return x;138}139 140int8_t positive6_convert_unsigned_int_to_signed_char(uint32_t x) {141#line 700142  return x;143}144 145int8_t positive7_convert_signed_int_to_signed_char(int32_t x) {146#line 800147  return x;148}149 150#line 1120 // !!!151 152void test_positives() {153  // No bits set.154  positive0_convert_unsigned_int_to_signed_int(0);155  positive1_convert_signed_int_to_unsigned_int(0);156  positive2_convert_signed_int_to_unsigned_char(0);157  positive3_convert_signed_char_to_unsigned_char(0);158  positive4_convert_unsigned_char_to_signed_char(0);159  positive5_convert_signed_char_to_unsigned_int(0);160  positive6_convert_unsigned_int_to_signed_char(0);161  positive7_convert_signed_int_to_signed_char(0);162 163  // One lowest bit set.164  positive0_convert_unsigned_int_to_signed_int(1);165  positive1_convert_signed_int_to_unsigned_int(1);166  positive2_convert_signed_int_to_unsigned_char(1);167  positive3_convert_signed_char_to_unsigned_char(1);168  positive4_convert_unsigned_char_to_signed_char(1);169  positive5_convert_signed_char_to_unsigned_int(1);170  positive6_convert_unsigned_int_to_signed_char(1);171  positive7_convert_signed_int_to_signed_char(1);172 173#if defined(V0)174  // All source bits set.175  positive0_convert_unsigned_int_to_signed_int((uint32_t)UINT32_MAX);176// CHECK-V0: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)177  positive1_convert_signed_int_to_unsigned_int((int32_t)UINT32_MAX);178// CHECK-V0: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967295 (32-bit, unsigned)179  positive2_convert_signed_int_to_unsigned_char((int32_t)UINT32_MAX);180// CHECK-V0: {{.*}}integer-sign-change.c:300:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)181  positive3_convert_signed_char_to_unsigned_char((int8_t)UINT8_MAX);182// CHECK-V0: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -1 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)183  positive4_convert_unsigned_char_to_signed_char((uint8_t)UINT8_MAX);184// CHECK-V0: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 255 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)185  positive5_convert_signed_char_to_unsigned_int((int8_t)UINT8_MAX);186// CHECK-V0: {{.*}}integer-sign-change.c:600:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -1 (8-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967295 (32-bit, unsigned)187  positive6_convert_unsigned_int_to_signed_char((uint32_t)UINT32_MAX);188// CHECK-V0: {{.*}}integer-sign-change.c:700:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)189  positive7_convert_signed_int_to_signed_char((int32_t)UINT32_MAX);190#elif defined(V1)191  // Source 'Sign' bit set.192  positive0_convert_unsigned_int_to_signed_int((uint32_t)INT32_MIN);193// CHECK-V1: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483648 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -2147483648 (32-bit, signed)194  positive1_convert_signed_int_to_unsigned_int((int32_t)INT32_MIN);195// CHECK-V1: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 2147483648 (32-bit, unsigned)196  positive2_convert_signed_int_to_unsigned_char((int32_t)INT32_MIN);197// CHECK-V1: {{.*}}integer-sign-change.c:300:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 0 (8-bit, unsigned)198  positive3_convert_signed_char_to_unsigned_char((int8_t)INT8_MIN);199// CHECK-V1: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)200  positive4_convert_unsigned_char_to_signed_char((uint8_t)INT8_MIN);201// CHECK-V1: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 128 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)202  positive5_convert_signed_char_to_unsigned_int((int8_t)INT8_MIN);203// CHECK-V1: {{.*}}integer-sign-change.c:600:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967168 (32-bit, unsigned)204  positive6_convert_unsigned_int_to_signed_char((uint32_t)INT32_MIN);205  positive7_convert_signed_int_to_signed_char((int32_t)INT32_MIN);206// CHECK-V1: {{.*}}integer-sign-change.c:800:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to 0 (8-bit, signed)207#elif defined(V2)208  // All bits except the source 'Sign' bit are set.209  positive0_convert_unsigned_int_to_signed_int((uint32_t)INT32_MAX);210  positive1_convert_signed_int_to_unsigned_int((int32_t)INT32_MAX);211  positive2_convert_signed_int_to_unsigned_char((int32_t)INT32_MAX);212  positive3_convert_signed_char_to_unsigned_char((int8_t)INT8_MAX);213  positive4_convert_unsigned_char_to_signed_char((uint8_t)INT8_MAX);214  positive5_convert_signed_char_to_unsigned_int((int8_t)INT8_MAX);215  positive6_convert_unsigned_int_to_signed_char((uint32_t)INT32_MAX);216// CHECK-V2: {{.*}}integer-sign-change.c:700:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483647 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)217  positive7_convert_signed_int_to_signed_char((int32_t)INT32_MAX);218// CHECK-V2: {{.*}}integer-sign-change.c:800:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value 2147483647 (32-bit, signed) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)219#elif defined(V3)220  // All destination bits set.221  positive0_convert_unsigned_int_to_signed_int((uint32_t)UINT32_MAX);222// CHECK-V3: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)223  positive1_convert_signed_int_to_unsigned_int((int32_t)UINT32_MAX);224// CHECK-V3: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967295 (32-bit, unsigned)225  positive2_convert_signed_int_to_unsigned_char((int32_t)UINT8_MAX);226  positive3_convert_signed_char_to_unsigned_char((int8_t)UINT8_MAX);227// CHECK-V3: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -1 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)228  positive4_convert_unsigned_char_to_signed_char((uint8_t)UINT8_MAX);229// CHECK-V3: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 255 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)230  positive5_convert_signed_char_to_unsigned_int((int8_t)UINT32_MAX);231// CHECK-V3: {{.*}}integer-sign-change.c:600:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -1 (8-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967295 (32-bit, unsigned)232  positive6_convert_unsigned_int_to_signed_char((uint32_t)UINT8_MAX);233// CHECK-V3: {{.*}}integer-sign-change.c:700:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 255 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)234  positive7_convert_signed_int_to_signed_char((int32_t)UINT8_MAX);235// CHECK-V3: {{.*}}integer-sign-change.c:800:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value 255 (32-bit, signed) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)236#elif defined(V4)237  // Destination 'sign' bit set.238  positive0_convert_unsigned_int_to_signed_int((uint32_t)INT32_MIN);239// CHECK-V4: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483648 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -2147483648 (32-bit, signed)240  positive1_convert_signed_int_to_unsigned_int((int32_t)INT32_MIN);241// CHECK-V4: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 2147483648 (32-bit, unsigned)242  positive2_convert_signed_int_to_unsigned_char((int32_t)INT8_MIN);243// CHECK-V4: {{.*}}integer-sign-change.c:300:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -128 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)244  positive3_convert_signed_char_to_unsigned_char((int8_t)INT8_MIN);245// CHECK-V4: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)246  positive4_convert_unsigned_char_to_signed_char((uint8_t)INT8_MIN);247// CHECK-V4: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 128 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)248  positive5_convert_signed_char_to_unsigned_int((int8_t)INT32_MIN);249  positive6_convert_unsigned_int_to_signed_char((uint32_t)INT8_MIN);250// CHECK-V4: {{.*}}integer-sign-change.c:700:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967168 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)251  positive7_convert_signed_int_to_signed_char((int32_t)INT8_MIN);252#elif defined(V5)253  // All bits except the destination 'sign' bit are set.254  positive0_convert_unsigned_int_to_signed_int((uint32_t)INT32_MIN);255// CHECK-V5: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483648 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -2147483648 (32-bit, signed)256  positive1_convert_signed_int_to_unsigned_int((int32_t)INT32_MIN);257// CHECK-V5: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 2147483648 (32-bit, unsigned)258  positive2_convert_signed_int_to_unsigned_char((int32_t)(~((uint32_t)(uint8_t)INT8_MIN)));259// CHECK-V5: {{.*}}integer-sign-change.c:300:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -129 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 127 (8-bit, unsigned)260  positive3_convert_signed_char_to_unsigned_char((int8_t)(INT8_MIN));261// CHECK-V5: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)262  positive4_convert_unsigned_char_to_signed_char((uint8_t)(INT8_MIN));263// CHECK-V5: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 128 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)264  positive5_convert_signed_char_to_unsigned_int((int8_t)(INT32_MIN));265  positive6_convert_unsigned_int_to_signed_char(~((uint32_t)(uint8_t)INT8_MIN));266  positive7_convert_signed_int_to_signed_char((int32_t)(~((uint32_t)((uint8_t)INT8_MIN))));267// CHECK-V5: {{.*}}integer-sign-change.c:800:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -129 (32-bit, signed) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to 127 (8-bit, signed)268#elif defined(V6)269  // Only the source and destination sign bits are set.270  positive0_convert_unsigned_int_to_signed_int((uint32_t)INT32_MIN);271// CHECK-V6: {{.*}}integer-sign-change.c:100:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483648 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -2147483648 (32-bit, signed)272  positive1_convert_signed_int_to_unsigned_int((int32_t)INT32_MIN);273// CHECK-V6: {{.*}}integer-sign-change.c:200:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483648 (32-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 2147483648 (32-bit, unsigned)274  positive2_convert_signed_int_to_unsigned_char((int32_t)((uint32_t)INT32_MIN | (uint32_t)((uint8_t)INT8_MIN)));275// CHECK-V6: {{.*}}integer-sign-change.c:300:10: runtime error: implicit conversion from type '{{.*}}' (aka 'int') of value -2147483520 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)276  positive3_convert_signed_char_to_unsigned_char((int8_t)INT8_MIN);277// CHECK-V6: {{.*}}integer-sign-change.c:400:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 128 (8-bit, unsigned)278  positive4_convert_unsigned_char_to_signed_char((uint8_t)INT8_MIN);279// CHECK-V6: {{.*}}integer-sign-change.c:500:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned char') of value 128 (8-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)280  positive5_convert_signed_char_to_unsigned_int((int8_t)INT8_MIN);281// CHECK-V6: {{.*}}integer-sign-change.c:600:10: runtime error: implicit conversion from type '{{.*}}' (aka '{{(signed )?}}char') of value -128 (8-bit, signed) to type '{{.*}}' (aka 'unsigned int') changed the value to 4294967168 (32-bit, unsigned)282  positive6_convert_unsigned_int_to_signed_char((uint32_t)((uint32_t)INT32_MIN | (uint32_t)((uint8_t)INT8_MIN)));283// CHECK-V6: {{.*}}integer-sign-change.c:700:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 2147483776 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -128 (8-bit, signed)284  positive7_convert_signed_int_to_signed_char((int32_t)((uint32_t)INT32_MIN | (uint32_t)((uint8_t)INT8_MIN)));285#else286#error Some V* needs to be defined!287#endif288}289 290// CHECK-NOT: implicit conversion291 292int main() {293  test_negatives();294  test_positives();295 296  return 0;297}298