diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2019-09-08 17:50:40 +0000 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2019-09-08 17:50:40 +0000 |
commit | 64965430db5706a0b235d52663f1fa466b53eed8 (patch) | |
tree | aa4cadfe2eca20bf29da7eb218174e8a5273d5f0 /clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp | |
parent | def6ca8b330fc256e36cc8d08de78ac9b92d9165 (diff) | |
download | bcm5719-llvm-64965430db5706a0b235d52663f1fa466b53eed8.tar.gz bcm5719-llvm-64965430db5706a0b235d52663f1fa466b53eed8.zip |
[NFC][InstSimplify] Some tests for dropping null check after uadd.with.overflow of non-null (PR43246)
https://rise4fun.com/Alive/WRzq
Name: C <= Y && Y != 0 --> C <= Y iff C != 0
Pre: C != 0
%y_is_nonnull = icmp ne i64 %y, 0
%no_overflow = icmp ule i64 C, %y
%r = and i1 %y_is_nonnull, %no_overflow
=>
%r = %no_overflow
Name: C <= Y || Y != 0 --> Y != 0 iff C != 0
Pre: C != 0
%y_is_nonnull = icmp ne i64 %y, 0
%no_overflow = icmp ule i64 C, %y
%r = or i1 %y_is_nonnull, %no_overflow
=>
%r = %y_is_nonnull
Name: C > Y || Y == 0 --> C > Y iff C != 0
Pre: C != 0
%y_is_null = icmp eq i64 %y, 0
%overflow = icmp ugt i64 C, %y
%r = or i1 %y_is_null, %overflow
=>
%r = %overflow
Name: C > Y && Y == 0 --> Y == 0 iff C != 0
Pre: C != 0
%y_is_null = icmp eq i64 %y, 0
%overflow = icmp ugt i64 C, %y
%r = and i1 %y_is_null, %overflow
=>
%r = %y_is_null
https://bugs.llvm.org/show_bug.cgi?id=43246
llvm-svn: 371339
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp')
0 files changed, 0 insertions, 0 deletions