mirror of
https://github.com/intel/llvm.git
synced 2026-02-09 01:52:26 +08:00
Add additional testcases for nsw markings on ++ and --.
clang has generated correct IR for char/short decrement since r126816, but we didn't have any test coverage for decrement. Patch by Andrew Rogers. llvm-svn: 291805
This commit is contained in:
@@ -65,13 +65,37 @@ void test1() {
|
||||
// TRAPV: getelementptr inbounds i32, i32*
|
||||
// CATCH_UB: getelementptr inbounds i32, i32*
|
||||
|
||||
// PR9350: char increment never overflows.
|
||||
extern volatile signed char PR9350;
|
||||
// PR9350: char pre-increment never overflows.
|
||||
extern volatile signed char PR9350_char_inc;
|
||||
// DEFAULT: add i8 {{.*}}, 1
|
||||
// WRAPV: add i8 {{.*}}, 1
|
||||
// TRAPV: add i8 {{.*}}, 1
|
||||
// CATCH_UB: add i8 {{.*}}, 1
|
||||
++PR9350;
|
||||
++PR9350_char_inc;
|
||||
|
||||
// PR9350: char pre-decrement never overflows.
|
||||
extern volatile signed char PR9350_char_dec;
|
||||
// DEFAULT: add i8 {{.*}}, -1
|
||||
// WRAPV: add i8 {{.*}}, -1
|
||||
// TRAPV: add i8 {{.*}}, -1
|
||||
// CATCH_UB: add i8 {{.*}}, -1
|
||||
--PR9350_char_dec;
|
||||
|
||||
// PR9350: short pre-increment never overflows.
|
||||
extern volatile signed short PR9350_short_inc;
|
||||
// DEFAULT: add i16 {{.*}}, 1
|
||||
// WRAPV: add i16 {{.*}}, 1
|
||||
// TRAPV: add i16 {{.*}}, 1
|
||||
// CATCH_UB: add i16 {{.*}}, 1
|
||||
++PR9350_short_inc;
|
||||
|
||||
// PR9350: short pre-decrement never overflows.
|
||||
extern volatile signed short PR9350_short_dec;
|
||||
// DEFAULT: add i16 {{.*}}, -1
|
||||
// WRAPV: add i16 {{.*}}, -1
|
||||
// TRAPV: add i16 {{.*}}, -1
|
||||
// CATCH_UB: add i16 {{.*}}, -1
|
||||
--PR9350_short_dec;
|
||||
|
||||
// PR24256: don't instrument __builtin_frame_address.
|
||||
__builtin_frame_address(0 + 0);
|
||||
|
||||
Reference in New Issue
Block a user