mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-12 12:33:17 +00:00
change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol. Make the EH_LABEL MachineInstr hold its label with an MCSymbol instead of ID. Fix a bug in MMI.cpp which would return labels named "Label4" instead of "label4". llvm-svn: 98463
This commit is contained in:
parent
de49dbc188
commit
5fef80c5aa
@ -228,7 +228,7 @@ public:
|
|||||||
|
|
||||||
/// addLandingPad - Add a new panding pad. Returns the label ID for the
|
/// addLandingPad - Add a new panding pad. Returns the label ID for the
|
||||||
/// landing pad entry.
|
/// landing pad entry.
|
||||||
unsigned addLandingPad(MachineBasicBlock *LandingPad);
|
MCSymbol *addLandingPad(MachineBasicBlock *LandingPad);
|
||||||
|
|
||||||
/// addPersonality - Provide the personality function for the exception
|
/// addPersonality - Provide the personality function for the exception
|
||||||
/// information.
|
/// information.
|
||||||
|
@ -383,8 +383,7 @@ public:
|
|||||||
unsigned char TargetFlags = 0);
|
unsigned char TargetFlags = 0);
|
||||||
SDValue getValueType(EVT);
|
SDValue getValueType(EVT);
|
||||||
SDValue getRegister(unsigned Reg, EVT VT);
|
SDValue getRegister(unsigned Reg, EVT VT);
|
||||||
SDValue getLabel(unsigned Opcode, DebugLoc dl, SDValue Root,
|
SDValue getEHLabel(DebugLoc dl, SDValue Root, MCSymbol *Label);
|
||||||
unsigned LabelID);
|
|
||||||
SDValue getBlockAddress(BlockAddress *BA, EVT VT,
|
SDValue getBlockAddress(BlockAddress *BA, EVT VT,
|
||||||
bool isTarget = false, unsigned char TargetFlags = 0);
|
bool isTarget = false, unsigned char TargetFlags = 0);
|
||||||
|
|
||||||
|
@ -274,7 +274,6 @@ private:
|
|||||||
// Calls to these functions are generated by tblgen.
|
// Calls to these functions are generated by tblgen.
|
||||||
SDNode *Select_INLINEASM(SDNode *N);
|
SDNode *Select_INLINEASM(SDNode *N);
|
||||||
SDNode *Select_UNDEF(SDNode *N);
|
SDNode *Select_UNDEF(SDNode *N);
|
||||||
SDNode *Select_EH_LABEL(SDNode *N);
|
|
||||||
void CannotYetSelect(SDNode *N);
|
void CannotYetSelect(SDNode *N);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -40,6 +40,7 @@ class MachineBasicBlock;
|
|||||||
class MachineConstantPoolValue;
|
class MachineConstantPoolValue;
|
||||||
class SDNode;
|
class SDNode;
|
||||||
class Value;
|
class Value;
|
||||||
|
class MCSymbol;
|
||||||
template <typename T> struct DenseMapInfo;
|
template <typename T> struct DenseMapInfo;
|
||||||
template <typename T> struct simplify_type;
|
template <typename T> struct simplify_type;
|
||||||
template <typename T> struct ilist_traits;
|
template <typename T> struct ilist_traits;
|
||||||
@ -2088,18 +2089,18 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LabelSDNode : public SDNode {
|
class EHLabelSDNode : public SDNode {
|
||||||
SDUse Chain;
|
SDUse Chain;
|
||||||
unsigned LabelID;
|
MCSymbol *Label;
|
||||||
friend class SelectionDAG;
|
friend class SelectionDAG;
|
||||||
LabelSDNode(unsigned NodeTy, DebugLoc dl, SDValue ch, unsigned id)
|
EHLabelSDNode(DebugLoc dl, SDValue ch, MCSymbol *L)
|
||||||
: SDNode(NodeTy, dl, getSDVTList(MVT::Other)), LabelID(id) {
|
: SDNode(ISD::EH_LABEL, dl, getSDVTList(MVT::Other)), Label(L) {
|
||||||
InitOperands(&Chain, ch);
|
InitOperands(&Chain, ch);
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
unsigned getLabelID() const { return LabelID; }
|
MCSymbol *getLabel() const { return Label; }
|
||||||
|
|
||||||
static bool classof(const LabelSDNode *) { return true; }
|
static bool classof(const EHLabelSDNode *) { return true; }
|
||||||
static bool classof(const SDNode *N) {
|
static bool classof(const SDNode *N) {
|
||||||
return N->getOpcode() == ISD::EH_LABEL;
|
return N->getOpcode() == ISD::EH_LABEL;
|
||||||
}
|
}
|
||||||
|
@ -1553,7 +1553,12 @@ void AsmPrinter::printKill(const MachineInstr *MI) const {
|
|||||||
/// printLabel - This method prints a local label used by debug and
|
/// printLabel - This method prints a local label used by debug and
|
||||||
/// exception handling tables.
|
/// exception handling tables.
|
||||||
void AsmPrinter::printLabelInst(const MachineInstr *MI) const {
|
void AsmPrinter::printLabelInst(const MachineInstr *MI) const {
|
||||||
MCSymbol *Sym =
|
MCSymbol *Sym;
|
||||||
|
|
||||||
|
if (MI->getOperand(0).isMCSymbol())
|
||||||
|
Sym = MI->getOperand(0).getMCSymbol();
|
||||||
|
else
|
||||||
|
Sym =
|
||||||
OutContext.GetOrCreateTemporarySymbol(Twine(MAI->getPrivateGlobalPrefix()) +
|
OutContext.GetOrCreateTemporarySymbol(Twine(MAI->getPrivateGlobalPrefix()) +
|
||||||
"label" + Twine(MI->getOperand(0).getImm()));
|
"label" + Twine(MI->getOperand(0).getImm()));
|
||||||
OutStreamer.EmitLabel(Sym);
|
OutStreamer.EmitLabel(Sym);
|
||||||
|
@ -475,9 +475,15 @@ ComputeCallSiteTable(SmallVectorImpl<CallSiteEntry> &CallSites,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MCSymbol *BeginLabel;
|
||||||
|
if (MI->getOperand(0).isImm()) {
|
||||||
unsigned BeginLabelNo = MI->getOperand(0).getImm();
|
unsigned BeginLabelNo = MI->getOperand(0).getImm();
|
||||||
assert(BeginLabelNo && "Invalid label!");
|
assert(BeginLabelNo && "Invalid label!");
|
||||||
MCSymbol *BeginLabel = getDWLabel("label", BeginLabelNo);
|
BeginLabel = getDWLabel("label", BeginLabelNo);
|
||||||
|
} else {
|
||||||
|
BeginLabel = MI->getOperand(0).getMCSymbol();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// End of the previous try-range?
|
// End of the previous try-range?
|
||||||
if (BeginLabel == LastLabel)
|
if (BeginLabel == LastLabel)
|
||||||
|
@ -73,7 +73,7 @@ bool MachineModuleInfo::doFinalization() {
|
|||||||
/// getLabelSym - Turn a label ID into a symbol.
|
/// getLabelSym - Turn a label ID into a symbol.
|
||||||
MCSymbol *MachineModuleInfo::getLabelSym(unsigned ID) {
|
MCSymbol *MachineModuleInfo::getLabelSym(unsigned ID) {
|
||||||
return Context.GetOrCreateTemporarySymbol
|
return Context.GetOrCreateTemporarySymbol
|
||||||
(Twine(Context.getAsmInfo().getPrivateGlobalPrefix()) + "Label" +Twine(ID));
|
(Twine(Context.getAsmInfo().getPrivateGlobalPrefix()) + "label" +Twine(ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// EndFunction - Discard function meta information.
|
/// EndFunction - Discard function meta information.
|
||||||
@ -139,12 +139,11 @@ void MachineModuleInfo::addInvoke(MachineBasicBlock *LandingPad,
|
|||||||
|
|
||||||
/// addLandingPad - Provide the label of a try LandingPad block.
|
/// addLandingPad - Provide the label of a try LandingPad block.
|
||||||
///
|
///
|
||||||
unsigned MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
|
MCSymbol *MachineModuleInfo::addLandingPad(MachineBasicBlock *LandingPad) {
|
||||||
unsigned LandingPadID = NextLabelID();
|
MCSymbol *LandingPadLabel = getLabelSym(NextLabelID());
|
||||||
MCSymbol *LandingPadLabel = getLabelSym(LandingPadID);
|
|
||||||
LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
|
LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
|
||||||
LP.LandingPadLabel = LandingPadLabel;
|
LP.LandingPadLabel = LandingPadLabel;
|
||||||
return LandingPadID;
|
return LandingPadLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// addPersonality - Provide the personality function for the exception
|
/// addPersonality - Provide the personality function for the exception
|
||||||
|
@ -705,6 +705,13 @@ void InstrEmitter::EmitNode(SDNode *Node, bool IsClone, bool IsCloned,
|
|||||||
EmitCopyFromReg(Node, 0, IsClone, IsCloned, SrcReg, VRBaseMap);
|
EmitCopyFromReg(Node, 0, IsClone, IsCloned, SrcReg, VRBaseMap);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ISD::EH_LABEL: {
|
||||||
|
MCSymbol *S = cast<EHLabelSDNode>(Node)->getLabel();
|
||||||
|
BuildMI(*MBB, InsertPos, Node->getDebugLoc(),
|
||||||
|
TII->get(TargetOpcode::EH_LABEL)).addSym(S);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case ISD::INLINEASM: {
|
case ISD::INLINEASM: {
|
||||||
unsigned NumOps = Node->getNumOperands();
|
unsigned NumOps = Node->getNumOperands();
|
||||||
if (Node->getOperand(NumOps-1).getValueType() == MVT::Flag)
|
if (Node->getOperand(NumOps-1).getValueType() == MVT::Flag)
|
||||||
|
@ -1314,24 +1314,23 @@ SDValue SelectionDAG::getRegister(unsigned RegNo, EVT VT) {
|
|||||||
return SDValue(N, 0);
|
return SDValue(N, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDValue SelectionDAG::getLabel(unsigned Opcode, DebugLoc dl,
|
SDValue SelectionDAG::getEHLabel(DebugLoc dl, SDValue Root, MCSymbol *Label) {
|
||||||
SDValue Root,
|
|
||||||
unsigned LabelID) {
|
|
||||||
FoldingSetNodeID ID;
|
FoldingSetNodeID ID;
|
||||||
SDValue Ops[] = { Root };
|
SDValue Ops[] = { Root };
|
||||||
AddNodeIDNode(ID, Opcode, getVTList(MVT::Other), &Ops[0], 1);
|
AddNodeIDNode(ID, ISD::EH_LABEL, getVTList(MVT::Other), &Ops[0], 1);
|
||||||
ID.AddInteger(LabelID);
|
ID.AddPointer(Label);
|
||||||
void *IP = 0;
|
void *IP = 0;
|
||||||
if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
|
if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
|
||||||
return SDValue(E, 0);
|
return SDValue(E, 0);
|
||||||
|
|
||||||
SDNode *N = NodeAllocator.Allocate<LabelSDNode>();
|
SDNode *N = NodeAllocator.Allocate<EHLabelSDNode>();
|
||||||
new (N) LabelSDNode(Opcode, dl, Root, LabelID);
|
new (N) EHLabelSDNode(dl, Root, Label);
|
||||||
CSEMap.InsertNode(N, IP);
|
CSEMap.InsertNode(N, IP);
|
||||||
AllNodes.push_back(N);
|
AllNodes.push_back(N);
|
||||||
return SDValue(N, 0);
|
return SDValue(N, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SDValue SelectionDAG::getBlockAddress(BlockAddress *BA, EVT VT,
|
SDValue SelectionDAG::getBlockAddress(BlockAddress *BA, EVT VT,
|
||||||
bool isTarget,
|
bool isTarget,
|
||||||
unsigned char TargetFlags) {
|
unsigned char TargetFlags) {
|
||||||
|
@ -4362,8 +4362,7 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
|
|||||||
if (LandingPad && MMI) {
|
if (LandingPad && MMI) {
|
||||||
// Insert a label before the invoke call to mark the try range. This can be
|
// Insert a label before the invoke call to mark the try range. This can be
|
||||||
// used to detect deletion of the invoke via the MachineModuleInfo.
|
// used to detect deletion of the invoke via the MachineModuleInfo.
|
||||||
unsigned BeginLabelID = MMI->NextLabelID();
|
BeginLabel = MMI->getLabelSym(MMI->NextLabelID());
|
||||||
BeginLabel = MMI->getLabelSym(BeginLabelID);
|
|
||||||
|
|
||||||
// For SjLj, keep track of which landing pads go with which invokes
|
// For SjLj, keep track of which landing pads go with which invokes
|
||||||
// so as to maintain the ordering of pads in the LSDA.
|
// so as to maintain the ordering of pads in the LSDA.
|
||||||
@ -4377,8 +4376,7 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
|
|||||||
// Both PendingLoads and PendingExports must be flushed here;
|
// Both PendingLoads and PendingExports must be flushed here;
|
||||||
// this call might not return.
|
// this call might not return.
|
||||||
(void)getRoot();
|
(void)getRoot();
|
||||||
DAG.setRoot(DAG.getLabel(ISD::EH_LABEL, getCurDebugLoc(),
|
DAG.setRoot(DAG.getEHLabel(getCurDebugLoc(), getControlRoot(), BeginLabel));
|
||||||
getControlRoot(), BeginLabelID));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if target-independent constraints permit a tail call here.
|
// Check if target-independent constraints permit a tail call here.
|
||||||
@ -4466,10 +4464,8 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
|
|||||||
if (LandingPad && MMI) {
|
if (LandingPad && MMI) {
|
||||||
// Insert a label at the end of the invoke call to mark the try range. This
|
// Insert a label at the end of the invoke call to mark the try range. This
|
||||||
// can be used to detect deletion of the invoke via the MachineModuleInfo.
|
// can be used to detect deletion of the invoke via the MachineModuleInfo.
|
||||||
unsigned EndLabelID = MMI->NextLabelID();
|
MCSymbol *EndLabel = MMI->getLabelSym(MMI->NextLabelID());
|
||||||
MCSymbol *EndLabel = MMI->getLabelSym(EndLabelID);
|
DAG.setRoot(DAG.getEHLabel(getCurDebugLoc(), getRoot(), EndLabel));
|
||||||
DAG.setRoot(DAG.getLabel(ISD::EH_LABEL, getCurDebugLoc(),
|
|
||||||
getRoot(), EndLabelID));
|
|
||||||
|
|
||||||
// Inform MachineModuleInfo of range.
|
// Inform MachineModuleInfo of range.
|
||||||
MMI->addInvoke(LandingPad, BeginLabel, EndLabel);
|
MMI->addInvoke(LandingPad, BeginLabel, EndLabel);
|
||||||
|
@ -879,10 +879,10 @@ void SelectionDAGISel::SelectAllBasicBlocks(Function &Fn,
|
|||||||
if (MMI && BB->isLandingPad()) {
|
if (MMI && BB->isLandingPad()) {
|
||||||
// Add a label to mark the beginning of the landing pad. Deletion of the
|
// Add a label to mark the beginning of the landing pad. Deletion of the
|
||||||
// landing pad can thus be detected via the MachineModuleInfo.
|
// landing pad can thus be detected via the MachineModuleInfo.
|
||||||
unsigned LabelID = MMI->addLandingPad(BB);
|
MCSymbol *Label = MMI->addLandingPad(BB);
|
||||||
|
|
||||||
const TargetInstrDesc &II = TII.get(TargetOpcode::EH_LABEL);
|
const TargetInstrDesc &II = TII.get(TargetOpcode::EH_LABEL);
|
||||||
BuildMI(BB, SDB->getCurDebugLoc(), II).addImm(LabelID);
|
BuildMI(BB, SDB->getCurDebugLoc(), II).addSym(Label);
|
||||||
|
|
||||||
// Mark exception register as live in.
|
// Mark exception register as live in.
|
||||||
unsigned Reg = TLI.getExceptionAddressRegister();
|
unsigned Reg = TLI.getExceptionAddressRegister();
|
||||||
@ -1517,14 +1517,6 @@ SDNode *SelectionDAGISel::Select_UNDEF(SDNode *N) {
|
|||||||
return CurDAG->SelectNodeTo(N, TargetOpcode::IMPLICIT_DEF,N->getValueType(0));
|
return CurDAG->SelectNodeTo(N, TargetOpcode::IMPLICIT_DEF,N->getValueType(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
SDNode *SelectionDAGISel::Select_EH_LABEL(SDNode *N) {
|
|
||||||
SDValue Chain = N->getOperand(0);
|
|
||||||
unsigned C = cast<LabelSDNode>(N)->getLabelID();
|
|
||||||
SDValue Tmp = CurDAG->getTargetConstant(C, MVT::i32);
|
|
||||||
return CurDAG->SelectNodeTo(N, TargetOpcode::EH_LABEL,
|
|
||||||
MVT::Other, Tmp, Chain);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// GetVBR - decode a vbr encoding whose top bit is set.
|
/// GetVBR - decode a vbr encoding whose top bit is set.
|
||||||
ALWAYS_INLINE static uint64_t
|
ALWAYS_INLINE static uint64_t
|
||||||
GetVBR(uint64_t Val, const unsigned char *MatcherTable, unsigned &Idx) {
|
GetVBR(uint64_t Val, const unsigned char *MatcherTable, unsigned &Idx) {
|
||||||
@ -1651,7 +1643,8 @@ WalkChainUsers(SDNode *ChainedNode,
|
|||||||
|
|
||||||
if (User->getOpcode() == ISD::CopyToReg ||
|
if (User->getOpcode() == ISD::CopyToReg ||
|
||||||
User->getOpcode() == ISD::CopyFromReg ||
|
User->getOpcode() == ISD::CopyFromReg ||
|
||||||
User->getOpcode() == ISD::INLINEASM) {
|
User->getOpcode() == ISD::INLINEASM ||
|
||||||
|
User->getOpcode() == ISD::EH_LABEL) {
|
||||||
// If their node ID got reset to -1 then they've already been selected.
|
// If their node ID got reset to -1 then they've already been selected.
|
||||||
// Treat them like a MachineOpcode.
|
// Treat them like a MachineOpcode.
|
||||||
if (User->getNodeId() == -1)
|
if (User->getNodeId() == -1)
|
||||||
@ -2055,6 +2048,7 @@ SelectCodeCommon(SDNode *NodeToMatch, const unsigned char *MatcherTable,
|
|||||||
case ISD::TokenFactor:
|
case ISD::TokenFactor:
|
||||||
case ISD::CopyFromReg:
|
case ISD::CopyFromReg:
|
||||||
case ISD::CopyToReg:
|
case ISD::CopyToReg:
|
||||||
|
case ISD::EH_LABEL:
|
||||||
NodeToMatch->setNodeId(-1); // Mark selected.
|
NodeToMatch->setNodeId(-1); // Mark selected.
|
||||||
return 0;
|
return 0;
|
||||||
case ISD::AssertSext:
|
case ISD::AssertSext:
|
||||||
@ -2063,7 +2057,6 @@ SelectCodeCommon(SDNode *NodeToMatch, const unsigned char *MatcherTable,
|
|||||||
NodeToMatch->getOperand(0));
|
NodeToMatch->getOperand(0));
|
||||||
return 0;
|
return 0;
|
||||||
case ISD::INLINEASM: return Select_INLINEASM(NodeToMatch);
|
case ISD::INLINEASM: return Select_INLINEASM(NodeToMatch);
|
||||||
case ISD::EH_LABEL: return Select_EH_LABEL(NodeToMatch);
|
|
||||||
case ISD::UNDEF: return Select_UNDEF(NodeToMatch);
|
case ISD::UNDEF: return Select_UNDEF(NodeToMatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -564,9 +564,11 @@ void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TargetOpcode::DBG_LABEL:
|
case TargetOpcode::DBG_LABEL:
|
||||||
case TargetOpcode::EH_LABEL:
|
|
||||||
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
||||||
break;
|
break;
|
||||||
|
case TargetOpcode::EH_LABEL:
|
||||||
|
MCE.emitLabel(MI.getOperand(0).getMCSymbol());
|
||||||
|
break;
|
||||||
case TargetOpcode::IMPLICIT_DEF:
|
case TargetOpcode::IMPLICIT_DEF:
|
||||||
case TargetOpcode::KILL:
|
case TargetOpcode::KILL:
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
|
@ -111,9 +111,11 @@ void PPCCodeEmitter::emitBasicBlock(MachineBasicBlock &MBB) {
|
|||||||
MCE.emitWordBE(getBinaryCodeForInstr(MI));
|
MCE.emitWordBE(getBinaryCodeForInstr(MI));
|
||||||
break;
|
break;
|
||||||
case TargetOpcode::DBG_LABEL:
|
case TargetOpcode::DBG_LABEL:
|
||||||
case TargetOpcode::EH_LABEL:
|
|
||||||
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
||||||
break;
|
break;
|
||||||
|
case TargetOpcode::EH_LABEL:
|
||||||
|
MCE.emitLabel(MI.getOperand(0).getMCSymbol());
|
||||||
|
break;
|
||||||
case TargetOpcode::IMPLICIT_DEF:
|
case TargetOpcode::IMPLICIT_DEF:
|
||||||
case TargetOpcode::KILL:
|
case TargetOpcode::KILL:
|
||||||
break; // pseudo opcode, no side effects
|
break; // pseudo opcode, no side effects
|
||||||
|
@ -603,10 +603,13 @@ void Emitter<CodeEmitter>::emitInstruction(const MachineInstr &MI,
|
|||||||
llvm_report_error("JIT does not support inline asm!");
|
llvm_report_error("JIT does not support inline asm!");
|
||||||
break;
|
break;
|
||||||
case TargetOpcode::DBG_LABEL:
|
case TargetOpcode::DBG_LABEL:
|
||||||
case TargetOpcode::EH_LABEL:
|
|
||||||
case TargetOpcode::GC_LABEL:
|
case TargetOpcode::GC_LABEL:
|
||||||
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
MCE.emitLabel(MMI->getLabelSym(MI.getOperand(0).getImm()));
|
||||||
break;
|
break;
|
||||||
|
case TargetOpcode::EH_LABEL:
|
||||||
|
MCE.emitLabel(MI.getOperand(0).getMCSymbol());
|
||||||
|
break;
|
||||||
|
|
||||||
case TargetOpcode::IMPLICIT_DEF:
|
case TargetOpcode::IMPLICIT_DEF:
|
||||||
case TargetOpcode::KILL:
|
case TargetOpcode::KILL:
|
||||||
case X86::FP_REG_KILL:
|
case X86::FP_REG_KILL:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user