mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-13 08:56:04 +00:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318174 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42a6db53c8
commit
1715109e25
@ -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…
x
Reference in New Issue
Block a user