From 822023a5531cfa66bc2735d434032c9bf403a490 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Mon, 7 Jan 2013 22:25:52 +0000 Subject: [ubsan] Use correct type for compound assignment ops. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171801 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/compound-assign-overflow.c | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test/CodeGen/compound-assign-overflow.c (limited to 'test/CodeGen/compound-assign-overflow.c') diff --git a/test/CodeGen/compound-assign-overflow.c b/test/CodeGen/compound-assign-overflow.c new file mode 100644 index 0000000000..a178e9b02c --- /dev/null +++ b/test/CodeGen/compound-assign-overflow.c @@ -0,0 +1,36 @@ +// Verify proper type emitted for compound assignments +// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=signed-integer-overflow,unsigned-integer-overflow | FileCheck %s + +#include + +// CHECK: @[[INT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" } +// CHECK: @[[LINE_100:.*]] = private unnamed_addr constant {{.*}}, i32 100, i32 5 {{.*}} @[[INT]] +// CHECK: @[[UINT:.*]] = private unnamed_addr constant { i16, i16, [15 x i8] } { i16 0, i16 10, [15 x i8] c"'unsigned int'\00" } +// CHECK: @[[LINE_200:.*]] = private unnamed_addr constant {{.*}}, i32 200, i32 5 {{.*}} @[[UINT]] +// CHECK: @[[DIVINT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" } +// CHECK: @[[LINE_300:.*]] = private unnamed_addr constant {{.*}}, i32 300, i32 5 {{.*}} @[[DIVINT]] + +int32_t x; + +// CHECK: @compaddsigned +void compaddsigned() { +#line 100 + x += ((int32_t)1); + // CHECK: @__ubsan_handle_add_overflow(i8* bitcast ({{.*}} @[[LINE_100]] to i8*), {{.*}}) +} + +// CHECK: @compaddunsigned +void compaddunsigned() { +#line 200 + x += ((uint32_t)1U); + // CHECK: @__ubsan_handle_add_overflow(i8* bitcast ({{.*}} @[[LINE_200]] to i8*), {{.*}}) +} + +int8_t a, b; + +// CHECK: @compdiv +void compdiv() { +#line 300 + a /= b; + // CHECK: @__ubsan_handle_divrem_overflow(i8* bitcast ({{.*}} @[[LINE_300]] to i8*), {{.*}}) +} -- cgit v1.2.3-70-g09d2