Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

50 lines (38 sloc) 1.234 kb
#ifndef __LDC_GEN_ABI_H__
#define __LDC_GEN_ABI_H__
#include <vector>
struct Type;
struct IrFuncTyArg;
struct DValue;
namespace llvm
class Type;
class Value;
// return rewrite rule
struct ABIRewrite
/// get a rewritten value back to its original form
virtual LLValue* get(Type* dty, DValue* v) = 0;
/// get a rewritten value back to its original form and store result in provided lvalue
/// this one is optional and defaults to calling the one above
virtual void getL(Type* dty, DValue* v, llvm::Value* lval);
/// put out rewritten value
virtual LLValue* put(Type* dty, DValue* v) = 0;
/// should return the transformed type for this rewrite
virtual LLType* type(Type* dty, LLType* t) = 0;
// interface called by codegen
struct TargetABI
/// Returns the ABI for the target we're compiling for
static TargetABI* getTarget();
/// Returns the ABI for intrinsics
static TargetABI* getIntrinsic();
virtual void newFunctionType(TypeFunction* tf) {}
virtual bool returnInArg(TypeFunction* tf) = 0;
virtual bool passByVal(Type* t) = 0;
virtual void doneWithFunctionType() {}
virtual void rewriteFunctionType(TypeFunction* t) = 0;
Jump to Line
Something went wrong with that request. Please try again.