Mercurial > projects > ldc
annotate gen/metadata.h @ 1316:8c65217be813
Work around an LLVM bug by not referring to globals from metadata. This was
only used for consistency checking anyway.
For the LLVM bug, see http://llvm.org/PR4180 / http://llvm.org/PR4046
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Fri, 08 May 2009 16:00:44 +0200 |
parents | 875afb7a93b6 |
children | 4099548c80e0 |
rev | line source |
---|---|
1284
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
1 #ifndef LDC_GEN_METADATA_H |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
2 #define LDC_GEN_METADATA_H |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
3 |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
4 #include "gen/llvm-version.h" |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
5 |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
6 #if LLVM_REV >= 68420 |
1291
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
7 // Yay, we have metadata! |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
8 |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
9 #define USE_METADATA |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
10 #define METADATA_LINKAGE_TYPE llvm::GlobalValue::WeakODRLinkage |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
11 |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
12 // *** Metadata for TypeInfo instances *** |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
13 #define TD_PREFIX "llvm.ldc.typeinfo." |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
14 |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
15 /// The fields in the metadata node for a TypeInfo instance. |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
16 /// (Its name will be TD_PREFIX ~ <Name of TypeInfo global>) |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
17 enum TypeDataFields { |
1316
8c65217be813
Work around an LLVM bug by not referring to globals from metadata. This was
Frits van Bommel <fvbommel wxs.nl>
parents:
1291
diff
changeset
|
18 // TD_Confirm is disabled for now due to an LLVM bug when MDNodes contain |
8c65217be813
Work around an LLVM bug by not referring to globals from metadata. This was
Frits van Bommel <fvbommel wxs.nl>
parents:
1291
diff
changeset
|
19 // globals (see http://llvm.org/PR4180 / http://llvm.org/PR4046 ) |
8c65217be813
Work around an LLVM bug by not referring to globals from metadata. This was
Frits van Bommel <fvbommel wxs.nl>
parents:
1291
diff
changeset
|
20 TD_Confirm = -1,/// The TypeInfo this node is for. |
8c65217be813
Work around an LLVM bug by not referring to globals from metadata. This was
Frits van Bommel <fvbommel wxs.nl>
parents:
1291
diff
changeset
|
21 |
1291
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
22 TD_Type, /// A value of the LLVM type corresponding to this D type |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
23 |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
24 // Must be kept last: |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
25 TD_NumFields /// The number of fields in TypeInfo metadata |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
26 }; |
875afb7a93b6
Factor out some constants into the header so producers and consumers of
Frits van Bommel <fvbommel wxs.nl>
parents:
1284
diff
changeset
|
27 |
1284
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
28 #endif |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
29 |
5851c18e4c6d
Add metadata for TypeInfo -> llvm::Type mapping.
Frits van Bommel <fvbommel wxs.nl>
parents:
diff
changeset
|
30 #endif |