[llvm] r247047 - Fix CPP Backend for GEP API changes for opaque pointer types
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 8 11:42:30 PDT 2015
Author: dblaikie
Date: Tue Sep 8 13:42:29 2015
New Revision: 247047
URL: http://llvm.org/viewvc/llvm-project?rev=247047&view=rev
Log:
Fix CPP Backend for GEP API changes for opaque pointer types
Based on a patch by Jerome Witmann.
Added:
llvm/trunk/test/CodeGen/CPP/gep.ll
Modified:
llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
Modified: llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp?rev=247047&r1=247046&r2=247047&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp (original)
+++ llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp Tue Sep 8 13:42:29 2015
@@ -1356,23 +1356,18 @@ void CppWriter::printInstruction(const 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;
Added: llvm/trunk/test/CodeGen/CPP/gep.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/CPP/gep.ll?rev=247047&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/CPP/gep.ll (added)
+++ llvm/trunk/test/CodeGen/CPP/gep.ll Tue Sep 8 13:42:29 2015
@@ -0,0 +1,10 @@
+; RUN: llc -march=cpp -o - %s | FileCheck %s
+
+define void @f1(i32* %addr) {
+ %x = getelementptr i32, i32* %addr, i32 1
+; CHECK: ConstantInt* [[INT_1:.*]] = ConstantInt::get(mod->getContext(), APInt(32, StringRef("1"), 10));
+; CHECK: GetElementPtrInst::Create(IntegerType::get(mod->getContext(), 32), ptr_addr,
+; CHECK-NEXT: [[INT_1]]
+; CHECK-NEXT: }, "x", label_3);
+ ret void
+}
More information about the llvm-commits
mailing list