llvm/unittests
Serguei Katkov fe51c81ff8 [SCEV] Be careful with nuw/nsw/exact in InsertBinop
InsertBinop tries to find an appropriate instruction instead of
creating a new instruction. When it checks whether instruction is
the same as we need to create it ignores nuw/nsw/exact flags.

It leads to invalid behavior when poison instruction can be used
when it was not expected. Specifically, for example Expander
expands the SCEV built for instruction
%a = add i32 %v, 1
It is possible that InsertBinop can find an instruction
% b = add nuw nsw i32 %v, 1
and will use it instead of version w/o nuw nsw.
It is incorrect.

The patch conservatively ignores all instructions with any of
poison flags installed.

Reviewers: sanjoy, mkazantsev, sebpop, jbhateja
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D41576


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@321475 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-27 08:26:22 +00:00
..
ADT Fix APFloat from string conversion for Inf 2017-12-19 04:27:39 +00:00
Analysis [SCEV] Be careful with nuw/nsw/exact in InsertBinop 2017-12-27 08:26:22 +00:00
AsmParser Remove every uses of getGlobalContext() in LLVM (but the C API) 2016-04-14 21:59:01 +00:00
BinaryFormat [BinaryFormat] Fix out of bounds read. 2017-08-31 12:50:42 +00:00
Bitcode Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
CodeGen [CodeGen] Move printing MO_IntrinsicID operands to MachineOperand::print 2017-12-19 21:47:10 +00:00
DebugInfo Recommit "[DWARFv5] Dump an MD5 checksum in the line-table header." 2017-12-18 19:08:35 +00:00
ExecutionEngine [orc][cmake] Check if 8 byte atomics require libatomic for unittest 2017-12-20 22:26:41 +00:00
FuzzMutate [FuzzMutate] Only generate loads and stores to the first class sized types 2017-12-13 11:49:04 +00:00
IR [ConstantRange] Support for ashr in ConstantRange computation 2017-12-18 13:01:32 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Fix build for LLVM unittests 2017-09-15 21:12:13 +00:00
MC Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MI Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
Object Fix unittest for buildbot with mips host (32bit big endian) from r295174 2017-02-15 16:03:22 +00:00
ObjectYAML Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
Option [GSoC] Flag value completion for clang 2017-06-20 16:31:31 +00:00
ProfileData Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
Support Unbreak the build. Combining chrono with Optional is annoying. 2017-12-22 21:18:50 +00:00
Target Reapply "[GlobalISel] Remove the GISelAccessor API." 2017-08-15 22:31:51 +00:00
tools [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
Transforms Generalize llvm::replaceDbgDeclare and actually support the use-case that 2017-12-08 21:58:18 +00:00
XRay [XRay][graph] Disambiguate name of type from member name 2017-02-10 06:59:25 +00:00
CMakeLists.txt Reland 'Classify llvm-cfi-verify.' 2017-10-11 20:35:01 +00:00