1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/lib
Sanjay Patel 8720d89aac [DAGCombiner] re-enable truncation of binops
This is effectively re-committing the changes from:
rL347917 (D54640)
rL348195 (D55126)
...which were effectively reverted here:
rL348604
...because the code had a bug that could induce infinite looping
or eventual out-of-memory compilation.

The bug was that this code did not guard against transforming
opaque constants. More details are in the post-commit mailing
list thread for r347917. A reduced test for that is included
in the x86 bool-math.ll file. (I wasn't able to reduce a PPC
backend test for this, but it was almost the same pattern.)

Original commit message for r347917:

The motivating case for this is shown in:
https://bugs.llvm.org/show_bug.cgi?id=32023
and the corresponding rot16.ll regression tests.

Because x86 scalar shift amounts are i8 values, we can end up with trunc-binop-trunc
sequences that don't get folded in IR.

As the TODO comments suggest, there will be regressions if we extend this (for x86,
we mostly seem to be missing LEA opportunities, but there are likely vector folds
missing too). I think those should be considered existing bugs because this is the
same transform that we do as an IR canonicalization in instcombine. We just need
more tests to make those visible independent of this patch.

llvm-svn: 348706
2018-12-08 16:07:38 +00:00
..
Analysis [MemCpyOpt] memset->memcpy forwarding with undef tail 2018-12-07 21:16:58 +00:00
AsmParser [DebugInfo] IR/Bitcode changes for DISubprogram flags. 2018-11-28 21:14:32 +00:00
BinaryFormat Use RequireNullTerminator=false in identify_magic. 2018-12-01 00:22:39 +00:00
Bitcode [ModuleSummary] use StringRefs to avoid a redundant copy; NFC 2018-12-07 21:47:32 +00:00
CodeGen [DAGCombiner] re-enable truncation of binops 2018-12-08 16:07:38 +00:00
DebugInfo [NativePDB] Reconstruct function declarations from debug info. 2018-12-07 19:34:02 +00:00
Demangle [Demangle] remove itaniumFindTypesInMangledName 2018-11-27 16:11:24 +00:00
ExecutionEngine [ExecutionEngine] Change NotifyObjectEmitted/NotifyObjectFreed API. 2018-12-04 00:55:15 +00:00
Fuzzer
FuzzMutate
IR [IR] Don't assume all functions are 4 byte aligned 2018-12-07 08:34:59 +00:00
IRReader
LineEditor
Linker ThinLTO: Do not import debug info for imported global constants 2018-12-05 21:42:17 +00:00
LTO LTO: Don't internalize available_externally globals. 2018-12-05 00:09:36 +00:00
MC [MC] - Fix build bot. 2018-12-05 11:06:29 +00:00
Object [WebAssembly] Make WasmSymbol's signature usable for events (NFC) 2018-12-08 06:16:13 +00:00
ObjectYAML [Hexagon] Add missing flags to ELF YAMLIO 2018-11-28 16:25:47 +00:00
Option
OptRemarks
Passes Introduce llvm.experimental.widenable_condition intrinsic 2018-12-07 14:39:46 +00:00
ProfileData
Support Add Hurd target to LLVMSupport (1/2) 2018-11-29 03:23:01 +00:00
TableGen [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
Target AMDGPU: Fix offsets for < 4-byte aggregate kernel arguments 2018-12-07 22:12:17 +00:00
Testing
TextAPI [llvm-tapi] Don't try to override SequenceTraits for std::string 2018-12-07 19:29:00 +00:00
ToolDrivers
Transforms [MemCpyOpt] memset->memcpy forwarding with undef tail 2018-12-07 21:16:58 +00:00
WindowsManifest
XRay
CMakeLists.txt [llvm-tapi] initial commit, supports ELF text stubs 2018-12-03 19:30:52 +00:00
LLVMBuild.txt [llvm-tapi] initial commit, supports ELF text stubs 2018-12-03 19:30:52 +00:00