Skip to content

Commit 6db25e0

Browse files
committed
Merge from mainline.
fix an off-by-one error in my previous patch, don't treat the callee as a incoming arg. llvm-svn: 51438
1 parent e541679 commit 6db25e0

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

llvm/lib/Target/CBackend/CBackend.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2935,7 +2935,7 @@ void CWriter::visitInlineAsm(CallInst &CI) {
29352935
default: assert(0 && "Unknown asm constraint");
29362936
case InlineAsm::isInput: {
29372937
assert(ValueCount >= ResultVals.size() && "Input can't refer to result");
2938-
Value *V = CI.getOperand(ValueCount-ResultVals.size());
2938+
Value *V = CI.getOperand(ValueCount-ResultVals.size()+1);
29392939
Input.push_back(std::make_pair(C, V));
29402940
break;
29412941
}
@@ -2944,7 +2944,7 @@ void CWriter::visitInlineAsm(CallInst &CI) {
29442944
if (ValueCount < ResultVals.size())
29452945
V = ResultVals[ValueCount];
29462946
else
2947-
V = std::make_pair(CI.getOperand(ValueCount-ResultVals.size()), -1);
2947+
V = std::make_pair(CI.getOperand(ValueCount-ResultVals.size()+1), -1);
29482948
Output.push_back(std::make_pair("="+((I->isEarlyClobber ? "&" : "")+C),
29492949
V));
29502950
break;
@@ -2964,20 +2964,19 @@ void CWriter::visitInlineAsm(CallInst &CI) {
29642964
for (unsigned i = 0, e = Output.size(); i != e; ++i) {
29652965
if (i)
29662966
Out << ", ";
2967-
Out << "\"" << Output[i].first << "\"(";
2968-
writeOperandRaw(Output[i].second.first);
2967+
Out << "\"" << Output[i].first << "\"("
2968+
<< GetValueName(Output[i].second.first);
29692969
if (Output[i].second.second != -1)
29702970
Out << ".field" << Output[i].second.second; // Multiple retvals.
29712971
Out << ")";
29722972
}
29732973
Out << "\n :";
2974-
for (std::vector<std::pair<std::string, Value*> >::iterator I = Input.begin(),
2975-
E = Input.end(); I != E; ++I) {
2976-
Out << "\"" << I->first << "\"(";
2977-
writeOperandRaw(I->second);
2974+
for (unsigned i = 0, e = Input.size(); i != e; ++i) {
2975+
if (i)
2976+
Out << ", ";
2977+
Out << "\"" << Input[i].first << "\"(";
2978+
writeOperand(Input[i].second);
29782979
Out << ")";
2979-
if (I + 1 != E)
2980-
Out << ",";
29812980
}
29822981
if (Clobber.size())
29832982
Out << "\n :" << Clobber.substr(1);

0 commit comments

Comments
 (0)