From c3601526574d9f04779cea3a84c8b423e6b3fb26 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 8 Dec 2010 20:50:17 +0000 Subject: Eliminate some backend specific code in LLVMEngine::compileMatch (towards moving it to compile.cpp). git-svn-id: http://svn.drobilla.net/resp/resp@317 ad02d1e2-f140-0410-9f75-f8b11f17cedd --- src/compile.cpp | 2 +- src/llvm.cpp | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/compile.cpp b/src/compile.cpp index 4d8e98d..554fab6 100644 --- a/src/compile.cpp +++ b/src/compile.cpp @@ -130,7 +130,7 @@ compile_dot(CEnv& cenv, const ATuple* dot) throw() const ALiteral* index = (ALiteral*)(*++i); assert(index->tag() == T_INT32); CVal tupVal = resp_compile(cenv, tup); - return cenv.engine()->compileDot(cenv, tupVal, index->val); + return cenv.engine()->compileDot(cenv, tupVal, index->val + 1); // + 1 to skip RTTI } static CVal diff --git a/src/llvm.cpp b/src/llvm.cpp index c7d03a8..6975861 100644 --- a/src/llvm.cpp +++ b/src/llvm.cpp @@ -326,7 +326,7 @@ LLVMEngine::compileCons(CEnv& cenv, const AType* type, CVal rtti, const vector(cenv.engine()); IfState state = compileIfStart(cenv); - Value* matchee = llVal(resp_compile(cenv, match->list_ref(1))); - Value* rttiPtr = builder.CreateStructGEP(matchee, 0, "matchRTTIPtr"); - Value* rtti = builder.CreateLoad(rttiPtr, 0, "matchRTTI"); + CVal matchee = resp_compile(cenv, match->list_ref(1)); + Value* rtti = llVal(compileDot(cenv, matchee, 0)); size_t idx = 1; for (ATuple::const_iterator i = match->iter_at(2); i != match->end(); ++idx) { -- cgit v1.2.1