diff options
author | David Blaikie <dblaikie@gmail.com> | 2015-09-08 18:42:29 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2015-09-08 18:42:29 +0000 |
commit | 12dd3c4ebb2956413788a301ef0daf48cbbb05d0 (patch) | |
tree | 3eb545f5be0270557b720e143be5c9063e43916f /llvm/lib/Target/CppBackend/CPPBackend.cpp | |
parent | 989a7558b891ef576f6522fae3863de9bf5f0d73 (diff) | |
download | bcm5719-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/Target/CppBackend/CPPBackend.cpp')
-rw-r--r-- | llvm/lib/Target/CppBackend/CPPBackend.cpp | 25 |
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; |