ldc/gen/metadata.h
David Nadlinger 43e27d0dd1 Remove USE_METADATA.
It has been on by default for quite some time now.
2013-06-07 02:48:53 +02:00

56 lines
1.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//===-- 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