diff options
| author | Nick Hildenbrandt <hldnbrnd@uiuc.edu> | 2002-10-02 18:20:18 +0000 | 
|---|---|---|
| committer | Nick Hildenbrandt <hldnbrnd@uiuc.edu> | 2002-10-02 18:20:18 +0000 | 
| commit | e0ba1f25b6d0c96a7a826ff72623227367939695 (patch) | |
| tree | 69ddf694bb9ab886c6d3e7c1ac4662f1db16248e | |
| parent | c4d2ad21bf10fbbb20c79215d37ecc167109e9a9 (diff) | |
| download | bcm5719-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.cpp | 63 | 
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));  }  | 

