diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2017-01-12 19:51:44 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2017-01-12 19:51:44 +0000 |
commit | 6503f24da853ed3c127b4b2704cd58538cbcf974 (patch) | |
tree | 8cafab14917fe9cba8dda9665c0c485989b52a4f /clang/test/CodeGen/integer-overflow.c | |
parent | 3db8bcdbbabce19726ac7ea7fbaf320af26d1330 (diff) | |
download | llvm-6503f24da853ed3c127b4b2704cd58538cbcf974.zip llvm-6503f24da853ed3c127b4b2704cd58538cbcf974.tar.gz llvm-6503f24da853ed3c127b4b2704cd58538cbcf974.tar.bz2 |
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
Diffstat (limited to 'clang/test/CodeGen/integer-overflow.c')
-rw-r--r-- | clang/test/CodeGen/integer-overflow.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/clang/test/CodeGen/integer-overflow.c b/clang/test/CodeGen/integer-overflow.c index 6a7c3e5..0b28bc5 100644 --- a/clang/test/CodeGen/integer-overflow.c +++ b/clang/test/CodeGen/integer-overflow.c @@ -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); |