mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-01 23:50:43 +03:00
56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
//===-- gen/metadata.h - LDC-specific LLVM metadata definitions -*- C++ -*-===//
|
||
//
|
||
// LDC – the LLVM D compiler
|
||
//
|
||
// This file is distributed under the BSD-style LDC license. See the LICENSE
|
||
// file for details.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
//
|
||
// Defines the types of LLVM metadata used for D-specific optimization passes.
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
|
||
#ifndef LDC_GEN_METADATA_H
|
||
#define LDC_GEN_METADATA_H
|
||
|
||
// MDNode was moved into its own header, and contains Value*s
|
||
#if LDC_LLVM_VER >= 303
|
||
#include "llvm/IR/Metadata.h"
|
||
#else
|
||
#include "llvm/Metadata.h"
|
||
#endif
|
||
typedef llvm::Value MDNodeField;
|
||
|
||
#define METADATA_LINKAGE_TYPE llvm::GlobalValue::WeakODRLinkage
|
||
|
||
// *** Metadata for TypeInfo instances ***
|
||
#define TD_PREFIX "llvm.ldc.typeinfo."
|
||
|
||
/// The fields in the metadata node for a TypeInfo instance.
|
||
/// (Its name will be TD_PREFIX ~ <Name of TypeInfo global>)
|
||
enum TypeDataFields {
|
||
TD_TypeInfo, /// A reference toe the TypeInfo global this node is for.
|
||
|
||
TD_Type, /// A value of the LLVM type corresponding to this D type
|
||
|
||
// Must be kept last:
|
||
TD_NumFields /// The number of fields in TypeInfo metadata
|
||
};
|
||
|
||
|
||
// *** Metadata for ClassInfo instances ***
|
||
#define CD_PREFIX "llvm.ldc.classinfo."
|
||
|
||
/// The fields in the metadata node for a ClassInfo instance.
|
||
/// (Its name will be CD_PREFIX ~ <Name of ClassInfo global>)
|
||
enum ClassDataFields {
|
||
CD_BodyType, /// A value of the LLVM type corresponding to the class body.
|
||
CD_Finalize, /// True if this class (or a base class) has a destructor.
|
||
CD_CustomDelete,/// True if this class has an overridden delete operator.
|
||
|
||
// Must be kept last
|
||
CD_NumFields /// The number of fields in ClassInfo metadata
|
||
};
|
||
|
||
#endif
|