diff options
| author | Pierre Gousseau <pierregousseau14@gmail.com> | 2016-01-12 10:40:45 +0000 |
|---|---|---|
| committer | Pierre Gousseau <pierregousseau14@gmail.com> | 2016-01-12 10:40:45 +0000 |
| commit | bdd9da14d653c5b9616cb8562f58513c0c781964 (patch) | |
| tree | 2cc0e8307aae579bad4ce1d1d967478e8c2ff1a5 /clang/test | |
| parent | f617e678e90c85a1fc733ad8ce93ffc51cfd4f72 (diff) | |
| download | bcm5719-llvm-bdd9da14d653c5b9616cb8562f58513c0c781964.tar.gz bcm5719-llvm-bdd9da14d653c5b9616cb8562f58513c0c781964.zip | |
[analyzer] Fix RangeConstraintManager's pinning of single value ranges.
This fix a bug in RangeSet::pin causing single value ranges to be considered non conventionally ordered.
Differential Revision: http://reviews.llvm.org/D12901
llvm-svn: 257467
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Analysis/range_casts.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/Analysis/range_casts.c b/clang/test/Analysis/range_casts.c index f056cb85a33..682369cce66 100644 --- a/clang/test/Analysis/range_casts.c +++ b/clang/test/Analysis/range_casts.c @@ -73,6 +73,16 @@ void f7(long foo) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} } +void f8(long foo) +{ + unsigned index = -1; + if (index < foo) index = foo; + if (index + 1L == 0L) + clang_analyzer_warnIfReached(); // no-warning + else + clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} +} + void f9(long foo) { unsigned index = -1; @@ -93,6 +103,16 @@ void f10(long foo) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} } +void f11(long foo) +{ + unsigned index = -1; + if (index < foo) index = foo; + if (index + 1UL == 0L) + clang_analyzer_warnIfReached(); // no-warning + else + clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} +} + void f12(long foo) { unsigned index = -1; @@ -103,6 +123,16 @@ void f12(long foo) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} } +void f13(int foo) +{ + unsigned short index = -1; + if (index < foo) index = foo; + if (index + 1 == 0) + clang_analyzer_warnIfReached(); // no-warning + else + clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}} +} + void f14(long foo) { unsigned index = -1; |

