forked from OSchip/llvm-project
Set hasSideEffects=0 for TargetOpcode::{CFI_INSTRUCTION,EH_LABEL,GC_LABEL,ANNOTATION_LABEL}
D37065 (committed as rL317674) explicitly set hasSideEffects for all TargetOpcode::* instructions where it was inferred previously. This is a follow-up to that patch, setting hasSideEffects=0 for CFI_INSTRUCTION, EH_LABEL, GC_LABEL and ANNOTATION_LABEL. All LLVM tests pass after this change. This patch also modifies MachineInstr::isLabel returns true for a TargetOpcode::ANNOTATION_LABEL, which ensures that an annotation label won't be incorrectly considered safe to move. Differential Revision: https://reviews.llvm.org/D39941 llvm-svn: 318174
This commit is contained in:
parent
55dcf5e586
commit
64e879745f
|
@ -797,9 +797,14 @@ public:
|
|||
|
||||
bool isEHLabel() const { return getOpcode() == TargetOpcode::EH_LABEL; }
|
||||
bool isGCLabel() const { return getOpcode() == TargetOpcode::GC_LABEL; }
|
||||
bool isAnnotationLabel() const {
|
||||
return getOpcode() == TargetOpcode::ANNOTATION_LABEL;
|
||||
}
|
||||
|
||||
/// Returns true if the MachineInstr represents a label.
|
||||
bool isLabel() const { return isEHLabel() || isGCLabel(); }
|
||||
bool isLabel() const {
|
||||
return isEHLabel() || isGCLabel() || isAnnotationLabel();
|
||||
}
|
||||
|
||||
bool isCFIInstruction() const {
|
||||
return getOpcode() == TargetOpcode::CFI_INSTRUCTION;
|
||||
|
|
|
@ -906,7 +906,7 @@ def CFI_INSTRUCTION : Instruction {
|
|||
let InOperandList = (ins i32imm:$id);
|
||||
let AsmString = "";
|
||||
let hasCtrlDep = 1;
|
||||
let hasSideEffects = 1;
|
||||
let hasSideEffects = 0;
|
||||
let isNotDuplicable = 1;
|
||||
}
|
||||
def EH_LABEL : Instruction {
|
||||
|
@ -914,7 +914,7 @@ def EH_LABEL : Instruction {
|
|||
let InOperandList = (ins i32imm:$id);
|
||||
let AsmString = "";
|
||||
let hasCtrlDep = 1;
|
||||
let hasSideEffects = 1;
|
||||
let hasSideEffects = 0;
|
||||
let isNotDuplicable = 1;
|
||||
}
|
||||
def GC_LABEL : Instruction {
|
||||
|
@ -922,7 +922,7 @@ def GC_LABEL : Instruction {
|
|||
let InOperandList = (ins i32imm:$id);
|
||||
let AsmString = "";
|
||||
let hasCtrlDep = 1;
|
||||
let hasSideEffects = 1;
|
||||
let hasSideEffects = 0;
|
||||
let isNotDuplicable = 1;
|
||||
}
|
||||
def ANNOTATION_LABEL : Instruction {
|
||||
|
@ -930,7 +930,7 @@ def ANNOTATION_LABEL : Instruction {
|
|||
let InOperandList = (ins i32imm:$id);
|
||||
let AsmString = "";
|
||||
let hasCtrlDep = 1;
|
||||
let hasSideEffects = 1;
|
||||
let hasSideEffects = 0;
|
||||
let isNotDuplicable = 1;
|
||||
}
|
||||
def KILL : Instruction {
|
||||
|
|
Loading…
Reference in New Issue