| 1 |
#if USE_METADATA |
|---|
| 2 |
|
|---|
| 3 |
#ifndef LDC_GEN_METADATA_H |
|---|
| 4 |
#define LDC_GEN_METADATA_H |
|---|
| 5 |
|
|---|
| 6 |
// MDNode was moved into its own header, and contains Value*s |
|---|
| 7 |
#include "llvm/Metadata.h" |
|---|
| 8 |
typedef llvm::Value MDNodeField; |
|---|
| 9 |
|
|---|
| 10 |
// Use getNumElements() and getElement() to access elements. |
|---|
| 11 |
inline unsigned MD_GetNumElements(llvm::MDNode* N) { |
|---|
| 12 |
return N->getNumElements(); |
|---|
| 13 |
} |
|---|
| 14 |
|
|---|
| 15 |
inline MDNodeField* MD_GetElement(llvm::MDNode* N, unsigned i) { |
|---|
| 16 |
return N->getElement(i); |
|---|
| 17 |
} |
|---|
| 18 |
|
|---|
| 19 |
#define METADATA_LINKAGE_TYPE llvm::GlobalValue::WeakODRLinkage |
|---|
| 20 |
|
|---|
| 21 |
// *** Metadata for TypeInfo instances *** |
|---|
| 22 |
#define TD_PREFIX "llvm.ldc.typeinfo." |
|---|
| 23 |
|
|---|
| 24 |
/// The fields in the metadata node for a TypeInfo instance. |
|---|
| 25 |
/// (Its name will be TD_PREFIX ~ <Name of TypeInfo global>) |
|---|
| 26 |
enum TypeDataFields { |
|---|
| 27 |
TD_Confirm, /// The TypeInfo this node is for. |
|---|
| 28 |
|
|---|
| 29 |
TD_Type, /// A value of the LLVM type corresponding to this D type |
|---|
| 30 |
|
|---|
| 31 |
// Must be kept last: |
|---|
| 32 |
TD_NumFields /// The number of fields in TypeInfo metadata |
|---|
| 33 |
}; |
|---|
| 34 |
|
|---|
| 35 |
|
|---|
| 36 |
// *** Metadata for ClassInfo instances *** |
|---|
| 37 |
#define CD_PREFIX "llvm.ldc.classinfo." |
|---|
| 38 |
|
|---|
| 39 |
/// The fields in the metadata node for a ClassInfo instance. |
|---|
| 40 |
/// (Its name will be CD_PREFIX ~ <Name of ClassInfo global>) |
|---|
| 41 |
enum ClassDataFields { |
|---|
| 42 |
CD_BodyType, /// A value of the LLVM type corresponding to the class body. |
|---|
| 43 |
CD_Finalize, /// True if this class (or a base class) has a destructor. |
|---|
| 44 |
CD_CustomDelete,/// True if this class has an overridden delete operator. |
|---|
| 45 |
|
|---|
| 46 |
// Must be kept last |
|---|
| 47 |
CD_NumFields /// The number of fields in ClassInfo metadata |
|---|
| 48 |
}; |
|---|
| 49 |
|
|---|
| 50 |
#endif |
|---|
| 51 |
|
|---|
| 52 |
#endif // USE_METADATA |
|---|