diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-08-21 02:53:44 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-08-21 02:53:44 +0000 |
commit | 93b00a98a324b7b6debe03f71b741d094fe05d64 (patch) | |
tree | edbb19b25368aab6991c6c96a9b36d8b50fa03aa | |
parent | 573869fe5bfc2b9bff454c97bc9bb097f138306f (diff) | |
download | bcm5719-llvm-93b00a98a324b7b6debe03f71b741d094fe05d64.tar.gz bcm5719-llvm-93b00a98a324b7b6debe03f71b741d094fe05d64.zip |
IRgen: Add an LValue::MakeAddr variant which takes a type and uses that to build
the qualifiers.
Also, add CodeGenFunction::MakeAddrLValue() helper function which passes in the
ASTContext.
llvm-svn: 111714
-rw-r--r-- | clang/lib/CodeGen/CGValue.h | 8 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGValue.h b/clang/lib/CodeGen/CGValue.h index a1bd193f9e2..8153169c875 100644 --- a/clang/lib/CodeGen/CGValue.h +++ b/clang/lib/CodeGen/CGValue.h @@ -15,6 +15,7 @@ #ifndef CLANG_CODEGEN_CGVALUE_H #define CLANG_CODEGEN_CGVALUE_H +#include "clang/AST/ASTContext.h" #include "clang/AST/Type.h" namespace llvm { @@ -258,6 +259,13 @@ public: return R; } + static LValue MakeAddr(llvm::Value *V, QualType T, ASTContext &Context) { + Qualifiers Quals = Context.getCanonicalType(T).getQualifiers(); + Quals.setObjCGCAttr(Context.getObjCGCAttrKind(T)); + + return MakeAddr(V, Quals); + } + static LValue MakeVectorElt(llvm::Value *Vec, llvm::Value *Idx, unsigned CVR) { LValue R; diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 6dcf18c3cdf..726b7ed284e 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -975,6 +975,10 @@ public: return Quals; } + LValue MakeAddrLValue(llvm::Value *V, QualType T) { + return LValue::MakeAddr(V, T, getContext()); + } + /// CreateTempAlloca - This creates a alloca and inserts it into the entry /// block. The caller is responsible for setting an appropriate alignment on /// the alloca. |