summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Hildenbrandt <hldnbrnd@uiuc.edu>2002-10-02 18:20:18 +0000
committerNick Hildenbrandt <hldnbrnd@uiuc.edu>2002-10-02 18:20:18 +0000
commite0ba1f25b6d0c96a7a826ff72623227367939695 (patch)
tree69ddf694bb9ab886c6d3e7c1ac4662f1db16248e
parentc4d2ad21bf10fbbb20c79215d37ecc167109e9a9 (diff)
downloadbcm5719-llvm-e0ba1f25b6d0c96a7a826ff72623227367939695.tar.gz
bcm5719-llvm-e0ba1f25b6d0c96a7a826ff72623227367939695.zip
No longer include malloc.h. If protoypes are needed for memory functions they will be present in the byte code and the generated c as well.
llvm-svn: 4013
-rw-r--r--llvm/lib/CWriter/Writer.cpp63
1 files changed, 61 insertions, 2 deletions
diff --git a/llvm/lib/CWriter/Writer.cpp b/llvm/lib/CWriter/Writer.cpp
index 8b7aba9398a..4278f82fff9 100644
--- a/llvm/lib/CWriter/Writer.cpp
+++ b/llvm/lib/CWriter/Writer.cpp
@@ -518,7 +518,6 @@ void CWriter::printModule(Module *M) {
// get declaration for alloca
Out << "/* Provide Declarations */\n"
- << "#include <malloc.h>\n"
<< "#include <alloca.h>\n\n"
// Provide a definition for null if one does not already exist,
@@ -1019,8 +1018,68 @@ void CWriter::printIndexingExpression(Value *Ptr, User::op_iterator I,
}
}
+
+
+
+
+/*
+void CWriter::printIndexingExpression(Value *Ptr, User::op_iterator I,
+ User::op_iterator E) {
+ bool HasImplicitAddress = false;
+ // If accessing a global value with no indexing, avoid *(&GV) syndrome
+ if (GlobalValue *V = dyn_cast<GlobalValue>(Ptr)) {
+ HasImplicitAddress = true;
+ } else if (ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(Ptr)) {
+ HasImplicitAddress = true;
+ Ptr = CPR->getValue(); // Get to the global...
+ }
+
+ if (I == E) {
+ if (!HasImplicitAddress)
+ Out << "*"; // Implicit zero first argument: '*x' is equivalent to 'x[0]'
+
+ writeOperandInternal(Ptr);
+ return;
+ }
+
+ const Constant *CI = dyn_cast<Constant>(I->get());
+ if (HasImplicitAddress && (!CI || !CI->isNullValue()))
+ Out << "(&";
+
+ writeOperandInternal(Ptr);
+
+ if (HasImplicitAddress && (!CI || !CI->isNullValue())) {
+ Out << ")";
+ HasImplicitAddress = false; // HIA is only true if we haven't addressed yet
+ }
+
+ assert(!HasImplicitAddress || (CI && CI->isNullValue()) &&
+ "Can only have implicit address with direct accessing");
+
+ if (HasImplicitAddress) {
+ ++I;
+ } else if (CI && CI->isNullValue() && I+1 != E) {
+ // Print out the -> operator if possible...
+ if ((*(I+1))->getType() == Type::UByteTy) {
+ Out << (HasImplicitAddress ? "." : "->");
+ Out << "field" << cast<ConstantUInt>(*(I+1))->getValue();
+ I += 2;
+ }
+ }
+
+ for (; I != E; ++I)
+ if ((*I)->getType() == Type::LongTy) {
+ Out << "[";
+ writeOperand(*I);
+ Out << "]";
+ } else {
+ Out << ".field" << cast<ConstantUInt>(*I)->getValue();
+ }
+}
+*/
+
void CWriter::visitLoadInst(LoadInst &I) {
- Out << "*";
+ //Out << "*";
writeOperand(I.getOperand(0));
}
OpenPOWER on IntegriCloud