llvm-project/llvm/lib
Nikita Popov e3d3e862de [ConstantRange] Add overflow check helpers
Add functions to ConstantRange that determine whether the
unsigned/signed addition/subtraction of two ConstantRanges
may/always/never overflows. This will allow checking overflow
conditions based on known constant ranges in addition to known bits.

I'm implementing these methods on ConstantRange to allow them to be
unit tested independently of any ValueTracking machinery. The tests
include exhaustive testing on 4-bit ranges, to make sure the result
is both conservatively correct and maximally precise.

The OverflowResult enum is redeclared on ConstantRange, because
I wanted to avoid a dependency in either direction between
ValueTracking.h and ConstantRange.h.

Differential Revision: https://reviews.llvm.org/D59193

llvm-svn: 356276
2019-03-15 17:29:05 +00:00
..
Analysis [ThinLTO] Restructure AliasSummary to contain ValueInfo of Aliasee 2019-03-15 15:11:38 +00:00
AsmParser [ThinLTO] Restructure AliasSummary to contain ValueInfo of Aliasee 2019-03-15 15:11:38 +00:00
BinaryFormat [MsgPack] Removed MsgPackTypes 2019-03-13 18:56:33 +00:00
Bitcode [ThinLTO] Restructure AliasSummary to contain ValueInfo of Aliasee 2019-03-15 15:11:38 +00:00
CodeGen [SelectionDAG] Add SimplifyDemandedBits handling for ISD::SCALAR_TO_VECTOR 2019-03-15 17:00:55 +00:00
DebugInfo [llvm] Skip over empty line table entries. 2019-03-15 15:00:12 +00:00
Demangle Add missing include (cstdlib) to Demangle.h 2019-01-22 19:18:18 +00:00
ExecutionEngine Add newline to interpreter debugging output 2019-03-07 10:14:38 +00:00
FuzzMutate [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
Fuzzer
IR [ConstantRange] Add overflow check helpers 2019-03-15 17:29:05 +00:00
IRReader [IRReader] Expose getLazyIRModule 2019-02-11 22:01:13 +00:00
LTO Reland "[Remarks] Add -foptimization-record-passes to filter remark emission" 2019-03-12 21:22:27 +00:00
LineEditor Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Linker Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MC [MC] Sort FDEs by the associated CIE before emitting them. 2019-03-14 23:08:19 +00:00
MCA [MCA] Highlight kernel bottlenecks in the summary view. 2019-03-04 11:52:34 +00:00
Object [WebAssembly] Improve support for "needed" list in dylink section 2019-03-13 21:29:20 +00:00
ObjectYAML [yaml2obj]Allow explicit setting of p_filesz, p_memsz, and p_offset 2019-03-15 10:35:27 +00:00
Option Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Passes [PGO] Context sensitive PGO (part 3) 2019-03-04 20:21:27 +00:00
ProfileData [SampleFDO] add suffix elision control for fcn names 2019-03-14 13:56:49 +00:00
Remarks [Remarks][NFC] Rename RemarkParser to YAMLRemarkParser 2019-03-05 20:50:35 +00:00
Support Handle consecutive-double-quotes in Windows argument parsing 2019-03-14 19:26:04 +00:00
TableGen [TableGen] Allow 2^63-1 and 2^63-2 as int literals. 2019-03-12 09:28:19 +00:00
Target [X86] Add SimplifyDemandedBitsForTargetNode support for PINSRB/PINSRW 2019-03-15 16:16:49 +00:00
Testing Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TextAPI Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ToolDrivers [llvm-ar][libObject] Fix relative paths when nesting thin archives. 2019-02-13 23:39:41 +00:00
Transforms [LLVM-C] Expose the "Add Discriminators" Pass To LLVM-C 2019-03-15 16:57:23 +00:00
WindowsManifest Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
XRay Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [OptRemarks] Make OptRemarks more generic: rename OptRemarks to Remarks 2019-03-05 20:45:17 +00:00
LLVMBuild.txt [OptRemarks] Make OptRemarks more generic: rename OptRemarks to Remarks 2019-03-05 20:45:17 +00:00