From ad8e9ae852face7572e6cf08d294cafc1af53cf8 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Sat, 2 Aug 2008 22:54:36 +0200 Subject: [PATCH] Implement a rough AddrExp::toConstElem() --- dmd/expression.h | 2 ++ gen/toir.cpp | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/dmd/expression.h b/dmd/expression.h index f748caa2..45af7835 100644 --- a/dmd/expression.h +++ b/dmd/expression.h @@ -865,6 +865,8 @@ struct AddrExp : UnaExp MATCH implicitConvTo(Type *t); Expression *castTo(Scope *sc, Type *t); Expression *optimize(int result); + // LLVMDC + virtual llvm::Constant *toConstElem(IRState *irs); }; struct PtrExp : UnaExp diff --git a/gen/toir.cpp b/gen/toir.cpp index 51b72a03..e9eb0536 100644 --- a/gen/toir.cpp +++ b/gen/toir.cpp @@ -847,6 +847,17 @@ DValue* AddrExp::toElem(IRState* p) return new DFieldValue(type, v->getLVal(), false); } +LLConstant* AddrExp::toConstElem(IRState* p) +{ + assert(e1->op == TOKvar); + VarExp* vexp = (VarExp*)e1; + VarDeclaration* vd = vexp->var->isVarDeclaration(); + assert(vd); + LLConstant* llc = llvm::dyn_cast(vd->ir.getIrValue()); + assert(llc); + return llc; +} + ////////////////////////////////////////////////////////////////////////////////////////// DValue* PtrExp::toElem(IRState* p)