mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 09:31:03 +03:00

Notably, the glue layer side of the changed multiple interface inheritance layout (DMD a54e89d) has not been implemented yet. This corresponds to DMD commit 3f6a763c0589dd03c1c206eafd434b593702564e.
51 lines
1.9 KiB
C++
51 lines
1.9 KiB
C++
|
|
/* Compiler implementation of the D programming language
|
|
* Copyright (c) 2013-2014 by Digital Mars
|
|
* All Rights Reserved
|
|
* written by Iain Buclaw
|
|
* http://www.digitalmars.com
|
|
* Distributed under the Boost Software License, Version 1.0.
|
|
* http://www.boost.org/LICENSE_1_0.txt
|
|
* https://github.com/D-Programming-Language/dmd/blob/master/src/target.h
|
|
*/
|
|
|
|
#ifndef TARGET_H
|
|
#define TARGET_H
|
|
|
|
// This file contains a data structure that describes a back-end target.
|
|
// At present it is incomplete, but in future it should grow to contain
|
|
// most or all target machine and target O/S specific information.
|
|
#include "globals.h"
|
|
|
|
class Expression;
|
|
class Type;
|
|
class Module;
|
|
struct OutBuffer;
|
|
|
|
struct Target
|
|
{
|
|
static int ptrsize;
|
|
static int realsize; // size a real consumes in memory
|
|
static int realpad; // 'padding' added to the CPU real size to bring it up to realsize
|
|
static int realalignsize; // alignment for reals
|
|
static bool reverseCppOverloads; // with dmc and cl, overloaded functions are grouped and in reverse order
|
|
static bool cppExceptions; // set if catching C++ exceptions is supported
|
|
static int c_longsize; // size of a C 'long' or 'unsigned long' type
|
|
static int c_long_doublesize; // size of a C 'long double'
|
|
static int classinfosize; // size of 'ClassInfo'
|
|
|
|
static void _init();
|
|
// Type sizes and support.
|
|
static unsigned alignsize(Type* type);
|
|
static unsigned fieldalign(Type* type);
|
|
static unsigned critsecsize();
|
|
static Type *va_listType(); // get type of va_list
|
|
static int checkVectorType(int sz, Type *type);
|
|
// CTFE support for cross-compilation.
|
|
static Expression *paintAsType(Expression *e, Type *type);
|
|
// ABI and backend.
|
|
static void loadModule(Module *m);
|
|
static void prefixName(OutBuffer *buf, LINK linkage);
|
|
};
|
|
|
|
#endif
|