summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2015-09-08 18:42:29 +0000
committerDavid Blaikie <dblaikie@gmail.com>2015-09-08 18:42:29 +0000
commit12dd3c4ebb2956413788a301ef0daf48cbbb05d0 (patch)
tree3eb545f5be0270557b720e143be5c9063e43916f /llvm/lib
parent989a7558b891ef576f6522fae3863de9bf5f0d73 (diff)
downloadbcm5719-llvm-12dd3c4ebb2956413788a301ef0daf48cbbb05d0.tar.gz
bcm5719-llvm-12dd3c4ebb2956413788a301ef0daf48cbbb05d0.zip
Fix CPP Backend for GEP API changes for opaque pointer types
Based on a patch by Jerome Witmann. llvm-svn: 247047
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/CppBackend/CPPBackend.cpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/llvm/lib/Target/CppBackend/CPPBackend.cpp b/llvm/lib/Target/CppBackend/CPPBackend.cpp
index d9d2de42f3e..58b0ee8dd96 100644
--- a/llvm/lib/Target/CppBackend/CPPBackend.cpp
+++ b/llvm/lib/Target/CppBackend/CPPBackend.cpp
@@ -1356,23 +1356,18 @@ void CppWriter::printInstruction(const Instruction *I,
}
case Instruction::GetElementPtr: {
const GetElementPtrInst* gep = cast<GetElementPtrInst>(I);
- if (gep->getNumOperands() <= 2) {
- Out << "GetElementPtrInst* " << iName << " = GetElementPtrInst::Create("
- << opNames[0];
- if (gep->getNumOperands() == 2)
- Out << ", " << opNames[1];
- } else {
- Out << "std::vector<Value*> " << iName << "_indices;";
- nl(Out);
- for (unsigned i = 1; i < gep->getNumOperands(); ++i ) {
- Out << iName << "_indices.push_back("
- << opNames[i] << ");";
- nl(Out);
+ Out << "GetElementPtrInst* " << iName << " = GetElementPtrInst::Create("
+ << getCppName(gep->getSourceElementType()) << ", " << opNames[0] << ", {";
+ in();
+ for (unsigned i = 1; i < gep->getNumOperands(); ++i ) {
+ if (i != 1) {
+ Out << ", ";
}
- Out << "Instruction* " << iName << " = GetElementPtrInst::Create("
- << opNames[0] << ", " << iName << "_indices";
+ nl(Out);
+ Out << opNames[i];
}
- Out << ", \"";
+ out();
+ nl(Out) << "}, \"";
printEscapedString(gep->getName());
Out << "\", " << bbname << ");";
break;
OpenPOWER on IntegriCloud