llvm-project/llvm/lib/CodeGen/GlobalISel
Eli Friedman cfd2c5ce58 Untangle the mess which is MachineBasicBlock::hasAddressTaken().
There are two different senses in which a block can be "address-taken".
There can be a BlockAddress involved, which means we need to map the
IR-level value to some specific block of machine code.  Or there can be
constructs inside a function which involve using the address of a basic
block to implement certain kinds of control flow.

Mixing these together causes a problem: if target-specific passes are
marking random blocks "address-taken", if we have a BlockAddress, we
can't actually tell which MachineBasicBlock corresponds to the
BlockAddress.

So split this into two separate bits: one for BlockAddress, and one for
the machine-specific bits.

Discovered while trying to sort out related stuff on D102817.

Differential Revision: https://reviews.llvm.org/D124697
2022-08-16 16:15:44 -07:00
..
CMakeLists.txt [nfc][codegen] Move RegisterBank[Info].cpp under CodeGen 2022-02-15 11:27:15 -08:00
CSEInfo.cpp [CodeGen] Qualify auto variables in for loops (NFC) 2022-07-17 01:33:28 -07:00
CSEMIRBuilder.cpp [GlobalISel] Change ConstantFoldVectorBinop to return vector of APInt 2022-05-13 09:33:07 +01:00
CallLowering.cpp [CodeGen] Qualify auto variables in for loops (NFC) 2022-07-17 01:33:28 -07:00
Combiner.cpp [GlobalISel][DebugInfo] salvageDebugInfo analogue for gMIR 2022-08-01 11:14:53 +02:00
CombinerHelper.cpp [GlobalISel] Fix miscompile of G_UREM + G_UDIV due to not checking for equality 2022-07-25 16:03:05 -07:00
GISelChangeObserver.cpp
GISelKnownBits.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
GlobalISel.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
IRTranslator.cpp Untangle the mess which is MachineBasicBlock::hasAddressTaken(). 2022-08-16 16:15:44 -07:00
InlineAsmLowering.cpp [IR] Don't use blockaddresses as callbr arguments 2022-07-15 10:18:17 +02:00
InstructionSelect.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
InstructionSelector.cpp [GISel] Don't fold convergent instruction across CFG 2022-07-01 10:24:24 -07:00
LegacyLegalizerInfo.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
LegalityPredicates.cpp GlobalISel: Add memSizeNotByteSizePow2 legality helper 2022-04-11 19:43:37 -04:00
LegalizeMutations.cpp GlobalISel: Add LegalizeMutations to help use More/FewerElements 2022-04-19 21:04:32 -04:00
Legalizer.cpp Cleanup include: codegen second round 2022-03-23 13:54:00 +01:00
LegalizerHelper.cpp [GIsel] Add missing libcall for G_MUL to LegalizerHelper 2022-08-02 13:35:25 -04:00
LegalizerInfo.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00
LoadStoreOpt.cpp [CodeGen] Qualify auto variables in for loops (NFC) 2022-07-17 01:33:28 -07:00
Localizer.cpp Cleanup includes: DebugInfo & CodeGen 2022-03-12 17:26:40 +01:00
LostDebugLocObserver.cpp
MachineIRBuilder.cpp [GlobalISel] Handle nullptr constants in dbg.value 2022-07-28 14:58:14 -07:00
RegBankSelect.cpp [globalisel] Select register bank for DBG_VALUE 2022-08-09 13:11:51 +08:00
Utils.cpp [llvm] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 11:24:15 -07:00