mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-20 02:58:10 +00:00
Inline asm's were still introducing bogus dependencies;
my earlier patch to this code only fixed half of it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69408 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
46445389d3
commit
97d14fcb6a
@ -5111,7 +5111,9 @@ void SelectionDAGLowering::visitInlineAsm(CallSite CS) {
|
||||
/// ConstraintOperands - Information about all of the constraints.
|
||||
std::vector<SDISelAsmOperandInfo> ConstraintOperands;
|
||||
|
||||
SDValue Chain = getRoot();
|
||||
// We won't need to flush pending loads if this asm doesn't touch
|
||||
// memory and is nonvolatile.
|
||||
SDValue Chain = IA->hasSideEffects() ? getRoot() : DAG.getRoot();
|
||||
SDValue Flag;
|
||||
|
||||
std::set<unsigned> OutputRegs, InputRegs;
|
||||
@ -5122,6 +5124,10 @@ void SelectionDAGLowering::visitInlineAsm(CallSite CS) {
|
||||
ConstraintInfos = IA->ParseConstraints();
|
||||
|
||||
bool hasMemory = hasInlineAsmMemConstraint(ConstraintInfos, TLI);
|
||||
// Flush pending loads if this touches memory (includes clobbering it).
|
||||
// It's possible this is overly conservative.
|
||||
if (hasMemory)
|
||||
Chain = getRoot();
|
||||
|
||||
unsigned ArgNo = 0; // ArgNo - The argument of the CallInst.
|
||||
unsigned ResNo = 0; // ResNo - The result number of the next output.
|
||||
|
Loading…
Reference in New Issue
Block a user