llvm-project/llvm/lib
Chandler Carruth 6f4ed077d0 [LV] Fix an issue where forming LCSSA in the place that we did would
change the set of uniform instructions in the loop causing an assert
failure.

The problem is that the legalization checking also builds data
structures mapping various facts about the loop body. The immediate
cause was the set of uniform instructions. If these then change when
LCSSA is formed, the data structures would already have been built and
become stale. The included test case triggered an assert in loop
vectorize that was reduced out of the new PM's pipeline.

The solution is to form LCSSA early enough that no information is cached
across the changes made. The only really obvious position is outside of
the main logic to vectorize the loop. This also has the advantage of
removing one case where forming LCSSA could mutate the loop but we
wouldn't track that as a "Changed" state.

If it is significantly advantageous to do some legalization checking
prior to this, we can do a more careful positioning but it seemed best
to just back off to a safe position first.

llvm-svn: 293168
2017-01-26 10:41:09 +00:00
..
Analysis [PM] Use PoisoningVH correctly when merely deleting entries in a map 2017-01-26 08:31:54 +00:00
AsmParser ASMParser: use range-based for loops (NFC) 2016-12-27 18:35:22 +00:00
Bitcode [ThinLTO] Fix lazy-loading of MDString instruction attachments 2017-01-20 20:29:16 +00:00
CodeGen [DAGCombiner] Fold extract_subvector of undef to undef. Fold away inserting undef subvectors. 2017-01-26 05:38:46 +00:00
DebugInfo NFC: Rename (PDB) RawSession to NativeSession 2017-01-25 22:38:55 +00:00
Demangle Demangle: correct demangling for CV-qualified functions 2017-01-24 20:04:58 +00:00
ExecutionEngine RuntimeDyldELF: add LDST128_ABS_LO12_NC reloc 2017-01-23 13:52:08 +00:00
Fuzzer [libFuzzer] remove a bit of stale code 2017-01-26 01:45:54 +00:00
IR New OptimizationRemarkEmitter pass for MIR 2017-01-25 23:20:33 +00:00
IRReader Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LTO [LTO] Teach lib/LTO about the new pass manager. 2017-01-24 00:58:24 +00:00
LibDriver LibDriver: Allow resource files to be archive members. 2016-12-15 19:37:46 +00:00
LineEditor
Linker [ThinLTO] Import only necessary DICompileUnit fields 2016-12-12 16:09:30 +00:00
MC [CodeView] Fix off-by-one error in def range gap emission 2017-01-24 16:57:55 +00:00
Object Fix llvm-objdump so it picks a good CPU based for Mach-O files 2017-01-24 23:41:04 +00:00
ObjectYAML Add LC_BUILD_VERSION load command 2017-01-23 20:07:55 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes [PM] Simplify the new PM interface to the loop unroller and expose two 2017-01-26 02:13:50 +00:00
ProfileData [WebAssembly] Add triple support for the new wasm object format 2017-01-17 20:34:09 +00:00
Support [APFloat] Fix comments. NFC. 2017-01-26 00:11:07 +00:00
TableGen [Hexagon, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-04 02:02:05 +00:00
Target [mips] N64 static relocation model support 2017-01-26 10:19:02 +00:00
Transforms [LV] Fix an issue where forming LCSSA in the place that we did would 2017-01-26 10:41:09 +00:00
XRay Avoid std::errc::protocol_* to appease mingw 2017-01-12 18:33:14 +00:00
CMakeLists.txt [XRay] Define the library for XRay trace logs 2017-01-11 06:39:09 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00