Make sure a global matching asm 'i' constraint gets its

flags set properly.  (hasMemory is clearly irrelevant
when matching 'i', I don't understand what this was
supposed to be doing.)
gcc.apple/asm-block-25.c (test passed before by
accident, but generated code was wrong)

llvm-svn: 76503
This commit is contained in:
Dale Johannesen 2009-07-20 23:39:13 +00:00
parent ade297d496
commit a2d2adfa4e
1 changed files with 2 additions and 5 deletions

View File

@ -4557,7 +4557,7 @@ X86TargetLowering::LowerGlobalAddress(const GlobalValue *GV, DebugLoc dl,
SDValue Result;
if (OpFlags == X86II::MO_NO_FLAG && isInt32(Offset)) {
// A direct static reference to a global.
Result = DAG.getTargetGlobalAddress(GV, getPointerTy(), Offset);
Result = DAG.getTargetGlobalAddress(GV, getPointerTy(), Offset, OpFlags);
Offset = 0;
} else {
Result = DAG.getTargetGlobalAddress(GV, getPointerTy(), 0, OpFlags);
@ -8911,10 +8911,7 @@ void X86TargetLowering::LowerAsmOperandForConstraint(SDValue Op,
getTargetMachine())))
return;
if (hasMemory)
Op = LowerGlobalAddress(GV, Op.getDebugLoc(), Offset, DAG);
else
Op = DAG.getTargetGlobalAddress(GV, GA->getValueType(0), Offset);
Op = LowerGlobalAddress(GV, Op.getDebugLoc(), Offset, DAG);
Result = Op;
break;
}