llvm-project/llvm/lib/CodeGen/GlobalISel
Jessica Paquette 3eabcda814 [GlobalISel] Ensure that translateInvoke adds all successors for inlineasm
The existing code didn't add all necessary successors, which resulted in
disjoint basic blocks. These would end up not being legalized which, in the
best case, caused a fallback only in assert builds.

Here's an example:

https://godbolt.org/z/ndx15Enfj

We also end up getting weird codegen here as well.

Refactoring the code here allows us to correctly attach all successors. With
this patch, the above example gives correct codegen at -O0 with and without
asserts.

Also autogen the testcase to show that we add all the successors now.

Differential Revision: https://reviews.llvm.org/D113437
2021-11-09 16:20:34 -08:00
..
CMakeLists.txt [globalisel][legalizer] Separate the deprecated LegalizerInfo from the current one 2021-06-01 13:23:48 -07:00
CSEInfo.cpp [GISel] Print better error messages for missing Combiner Observer calls 2021-07-01 15:18:18 -07:00
CSEMIRBuilder.cpp [GlobalISel] Add support for constant vector folding of binops in CSEMIRBuilder. 2021-10-12 11:31:22 -07:00
CallLowering.cpp Delay outgoing register assignments to last. 2021-10-04 12:33:20 -07:00
Combiner.cpp [CodeGen] Use make_early_inc_range (NFC) 2021-11-01 22:38:49 -07:00
CombinerHelper.cpp [AArch64][GlobalISel] combine (and (or x, c1), c2) => (and x, c2) iff c1 & c2 == 0 2021-10-20 12:11:52 -07:00
GISelChangeObserver.cpp
GISelKnownBits.cpp GlobalISel/Utils: Refactor integer/float constant match functions 2021-09-17 11:22:13 +02:00
GlobalISel.cpp
IRTranslator.cpp [GlobalISel] Ensure that translateInvoke adds all successors for inlineasm 2021-11-09 16:20:34 -08:00
InlineAsmLowering.cpp [AArch64] Legalize MVT::i64x8 in DAG isel lowering 2021-07-31 09:51:28 +01:00
InstructionSelect.cpp Move TargetRegistry.(h|cpp) from Support to MC 2021-10-08 14:51:48 -07:00
InstructionSelector.cpp GlobalISel/Utils: Refactor integer/float constant match functions 2021-09-17 11:22:13 +02:00
LegacyLegalizerInfo.cpp [GlobalISel] NFC: Change LLT::vector to take ElementCount. 2021-06-24 11:26:12 +01:00
LegalityPredicates.cpp [AMDGPU][GlobalISel] Legalize G_MUL for non-standard types 2021-09-07 16:33:24 +02:00
LegalizeMutations.cpp [AMDGPU][GlobalISel] Legalize G_MUL for non-standard types 2021-09-07 16:33:24 +02:00
Legalizer.cpp [GlobalISel] Improve elimination of dead instructions in legalizer 2021-09-20 13:00:58 +02:00
LegalizerHelper.cpp Fixed some errors detected by PVS Studio 2021-10-09 17:27:41 +02:00
LegalizerInfo.cpp [GlobalISel] Add convenience constructors to MemDesc 2021-09-03 12:52:18 +02:00
Localizer.cpp [CodeGen] Use make_early_inc_range (NFC) 2021-09-18 09:29:24 -07:00
LostDebugLocObserver.cpp
MachineIRBuilder.cpp Fix MSVC "signed/unsigned mismatch" comparison warning. NFCI. 2021-08-30 12:11:09 +01:00
RegBankSelect.cpp [GlobalISel] Simplify RegBankSelect 2021-10-28 10:30:55 +02:00
RegisterBank.cpp [GlobalISel] Use ListSeparator (NFC) 2021-02-04 21:18:04 -08:00
RegisterBankInfo.cpp [APInt] Stop using soft-deprecated constructors and methods in llvm. NFC. 2021-10-04 08:57:44 +01:00
Utils.cpp GlobalISel/Utils: Use incoming regbank while constraining the superclasses 2021-10-30 07:20:45 -04:00