@@ -1526,37 +1526,11 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) {
1526
1526
const DataLayout &DL = MO.getGlobal ()->getParent ()->getDataLayout ();
1527
1527
if (MO.getGlobal ()->getPointerAlignment (DL) < 4 )
1528
1528
llvm_unreachable (" Global must be word-aligned for LD, STD, LWA!" );
1529
-
1530
- // A faster non-TOC-based local-exec sequence is represented by
1531
- // directly loading or storing off of the thread pointer and with
1532
- // an immediate operand having the MO_TPREL_FLAG.
1533
- // Such instructions do not otherwise arise.
1534
- unsigned Flag = MO.getTargetFlags ();
1535
- if (Flag == PPCII::MO_TPREL_FLAG) {
1536
- assert (HasAIXSmallLocalExecTLS &&
1537
- " loads/stores with thread-pointer only expected with "
1538
- " local-exec small TLS" );
1539
- int64_t Offset = MO.getOffset ();
1540
- LowerPPCMachineInstrToMCInst (MI, TmpInst, *this );
1541
- const MCExpr *Expr = getAdjustedLocalExecExpr (MO, Offset);
1542
- if (Expr)
1543
- TmpInst.getOperand (OpNum) = MCOperand::createExpr (Expr);
1544
- EmitToStreamer (*OutStreamer, TmpInst);
1545
- return ;
1546
- }
1547
1529
}
1548
- // Now process the instruction normally.
1549
- break ;
1550
- }
1551
- case PPC::PseudoEIEIO: {
1552
- EmitToStreamer (
1553
- *OutStreamer,
1554
- MCInstBuilder (PPC::ORI).addReg (PPC::X2).addReg (PPC::X2).addImm (0 ));
1555
- EmitToStreamer (
1556
- *OutStreamer,
1557
- MCInstBuilder (PPC::ORI).addReg (PPC::X2).addReg (PPC::X2).addImm (0 ));
1558
- EmitToStreamer (*OutStreamer, MCInstBuilder (PPC::EnforceIEIO));
1559
- return ;
1530
+ // As these load/stores share common code with the following load/stores,
1531
+ // fall through to the subsequent cases in order to either process the
1532
+ // non-TOC-based local-exec sequence or to process the instruction normally.
1533
+ [[fallthrough]];
1560
1534
}
1561
1535
case PPC::LBZ:
1562
1536
case PPC::LBZ8:
@@ -1605,8 +1579,19 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) {
1605
1579
EmitToStreamer (*OutStreamer, TmpInst);
1606
1580
return ;
1607
1581
}
1582
+ // Now process the instruction normally.
1608
1583
break ;
1609
1584
}
1585
+ case PPC::PseudoEIEIO: {
1586
+ EmitToStreamer (
1587
+ *OutStreamer,
1588
+ MCInstBuilder (PPC::ORI).addReg (PPC::X2).addReg (PPC::X2).addImm (0 ));
1589
+ EmitToStreamer (
1590
+ *OutStreamer,
1591
+ MCInstBuilder (PPC::ORI).addReg (PPC::X2).addReg (PPC::X2).addImm (0 ));
1592
+ EmitToStreamer (*OutStreamer, MCInstBuilder (PPC::EnforceIEIO));
1593
+ return ;
1594
+ }
1610
1595
}
1611
1596
1612
1597
LowerPPCMachineInstrToMCInst (MI, TmpInst, *this );
0 commit comments