diff options
author | Nick Hildenbrandt <hldnbrnd@uiuc.edu> | 2002-09-25 20:29:26 +0000 |
---|---|---|
committer | Nick Hildenbrandt <hldnbrnd@uiuc.edu> | 2002-09-25 20:29:26 +0000 |
commit | e548f009f782bdd85764616a1f9c69e5b879b351 (patch) | |
tree | 9c90c81b72ba00592b1f9e62c3a3d5a30f202e8b /lib/Target/CBackend/CBackend.cpp | |
parent | 9474dd68e8a050193ca4003940ac399e2b17cb6a (diff) |
Strings now handled correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3920 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/CBackend.cpp')
-rw-r--r-- | lib/Target/CBackend/CBackend.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 3b8c67d45b..e54d457512 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -985,18 +985,23 @@ void CWriter::printIndexingExpression(Value *Ptr, User::op_iterator I, writeOperandInternal(Ptr); - if (HasImplicitAddress && (!CI || !CI->isNullValue())) + 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"); - // Print out the -> operator if possible... - if (CI && CI->isNullValue() && I+1 != E) { + 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; - } else { // First array index of 0: Just skip it - ++I; - } + } } for (; I != E; ++I) @@ -1015,14 +1020,14 @@ void CWriter::visitLoadInst(LoadInst &I) { } void CWriter::visitStoreInst(StoreInst &I) { - Out << "*"; + //Out << "*"; writeOperand(I.getPointerOperand()); Out << " = "; writeOperand(I.getOperand(0)); } void CWriter::visitGetElementPtrInst(GetElementPtrInst &I) { - Out << "&"; + //Out << "&"; printIndexingExpression(I.getPointerOperand(), I.idx_begin(), I.idx_end()); } |