diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td --- a/llvm/lib/Target/ARM/ARMInstrThumb2.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td @@ -5476,9 +5476,14 @@ let Predicates = [IsThumb2, HasV8_1MMainline, HasLOB]; } +// This is a pseudo op for a label used by a branch future instruction def t2BF_LabelPseudo : t2PseudoInst<(outs ), (ins pclabel:$cp), 0, NoItinerary, []> { - let isTerminator = 1; + // Turns into just a label, rather than any instructions. + let Size = 0; + // This defines a label, $cp, so we shouldn't duplicate this because we cannot + // define the label in two different places. + let isNotDuplicable = true; let Predicates = [IsThumb2, HasV8_1MMainline, HasLOB]; let hasNoSchedulingInfo = 1; }