llvm-project/llvm/test
Nikita Popov 8db5143b1a [InstCombine] Optimize overflow check base on uadd.with.overflow result
Fix for https://bugs.llvm.org/show_bug.cgi?id=40846.

This adds a combine for cases where a (a + b) < a style overflow
check is performed, but with a + b being the result of
uadd.with.overflow, so the overflow result is also already available
and we can just use it. Subsequently GVN/CSE will deduplicate the extracts.

We can run into this situation if you have both a uadd.with.overflow
and a manual add + overflow check in the same function (on the same
operands), in which case GVN will rewrite the add to the with.overflow
result and leave you with this pattern.

The implementation is a bit ugly because I'm handling the various
canonicalization edge cases.

This does not yet handle the negated version of this pattern.

Differential Revision: https://reviews.llvm.org/D58644
2019-12-11 20:52:04 +01:00
..
Analysis [ValueTracking] Pointer is known nonnull after load/store 2019-12-11 20:32:29 +01:00
Assembler [DebugInfo] Remove the DIFlagArgumentNotModified debug info flag 2019-11-20 13:18:40 +01:00
Bindings Updated the OCaml/bitwriter.ml test for OCaml 4.06+ 2019-11-30 13:35:23 +01:00
Bitcode Add support for multi-module bitcode files to llvm-dis 2019-11-14 10:40:41 -08:00
BugPoint bugpoint: Add option to disable attribute removal 2019-11-19 11:11:00 +05:30
CodeGen [ValueTracking] Pointer is known nonnull after load/store 2019-12-11 20:32:29 +01:00
DebugInfo Revert "[DebugInfo] Refactored macro related generation, added a test case for macinfo.dwo emission." 2019-12-10 21:32:30 -05:00
Demangle
Examples Revert "[Examples] Add IRTransformations directory to examples." 2019-12-01 22:20:20 +00:00
ExecutionEngine [ORC][JITLink] Add support for weak references, and improve handling of static 2019-11-28 13:30:49 -08:00
Feature Revert "[ARM] Allocatable Global Register Variables for ARM" 2019-11-29 17:01:05 +00:00
FileCheck [FileCheck] Given multiple -dump-input, prefer most verbose 2019-12-03 14:21:13 -05:00
Instrumentation Revert "[Coverage] Revise format to reduce binary size" 2019-12-04 10:35:14 -08:00
Integer
JitListener
LTO
Linker [IRMover] Set Address Space for moved global values 2019-11-05 16:32:48 -08:00
MC [RISCV] Improve assembler missing feature warnings 2019-12-10 16:44:48 +00:00
MachineVerifier [MachineVerifier] Improve checks of target instructions operands. 2019-12-03 10:20:52 +01:00
Object [llvm-readelf/llvm-readobj] - Improved the error reporting in a few method related to versioning. 2019-12-10 13:08:18 +03:00
ObjectYAML [ObjectYAML] - Redefine LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex*) as LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR. 2019-10-30 18:12:48 +03:00
Other [VectorUtils] Introduce the Vector Function Database (VFDatabase). 2019-12-10 16:36:44 +00:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Add bang-operators !getop and !setop. 2019-12-11 12:05:22 +00:00
ThinLTO/X86 [ThinLTO] Add option to disable readonly/writeonly attribute propagation 2019-12-05 16:33:54 -08:00
Transforms [InstCombine] Optimize overflow check base on uadd.with.overflow result 2019-12-11 20:52:04 +01:00
Unit
Verifier Verifier: Check frame-pointer attribute values 2019-12-11 19:53:49 +05:30
YAMLParser
tools [test][llvm-dwarfdump] Add missing testing for some --debug-* options 2019-12-11 13:42:54 +00:00
.clang-format
CMakeLists.txt Introduce llvm-install-name-tool 2019-11-19 23:42:37 -08:00
TestRunner.sh
lit.cfg.py Introduce llvm-install-name-tool 2019-11-19 23:42:37 -08:00
lit.site.cfg.py.in