Mercurial > projects > ldc
changeset 1344:3297edb697eb
Re-enable consistency check for fixed LLVM versions.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Mon, 11 May 2009 15:48:33 +0200 |
parents | c21a6654cce2 |
children | 712662f45ee4 |
files | gen/metadata.h gen/passes/GarbageCollect2Stack.cpp gen/typinf.cpp |
diffstat | 3 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/metadata.h Mon May 11 11:59:22 2009 +0200 +++ b/gen/metadata.h Mon May 11 15:48:33 2009 +0200 @@ -42,9 +42,14 @@ /// The fields in the metadata node for a TypeInfo instance. /// (Its name will be TD_PREFIX ~ <Name of TypeInfo global>) enum TypeDataFields { - // TD_Confirm is disabled for now due to an LLVM bug when MDNodes contain - // globals (see http://llvm.org/PR4180 / http://llvm.org/PR4046 ) +#if LLVM_REV < 71407 + // TD_Confirm is disabled for older revisions due to an LLVM bug when + // MDNodes contain globals + // (see http://llvm.org/PR4180 / http://llvm.org/PR4046 ) TD_Confirm = -1,/// The TypeInfo this node is for. +#else + TD_Confirm, /// The TypeInfo this node is for. +#endif TD_Type, /// A value of the LLVM type corresponding to this D type
--- a/gen/passes/GarbageCollect2Stack.cpp Mon May 11 11:59:22 2009 +0200 +++ b/gen/passes/GarbageCollect2Stack.cpp Mon May 11 15:48:33 2009 +0200 @@ -397,8 +397,10 @@ if (!node) return NULL; - if (MD_GetNumElements(node) != TD_NumFields || - (TD_Confirm >= 0 && MD_GetElement(node, TD_Confirm)->stripPointerCasts() != ti_global)) + if (MD_GetNumElements(node) != TD_NumFields) + return NULL; + if (TD_Confirm >= 0 && (!MD_GetElement(node, TD_Confirm) || + MD_GetElement(node, TD_Confirm)->stripPointerCasts() != ti_global)) return NULL; return MD_GetElement(node, TD_Type)->getType();
--- a/gen/typinf.cpp Mon May 11 11:59:22 2009 +0200 +++ b/gen/typinf.cpp Mon May 11 15:48:33 2009 +0200 @@ -296,7 +296,7 @@ // Construct the fields MDNodeField* mdVals[TD_NumFields]; if (TD_Confirm >= 0) - mdVals[TD_Confirm] = llvm::cast<LLConstant>(irg->value); + mdVals[TD_Confirm] = llvm::cast<MDNodeField>(irg->value); mdVals[TD_Type] = llvm::UndefValue::get(DtoType(tid->tinfo)); // Construct the metadata llvm::MDNode* metadata = llvm::MDNode::get(mdVals, TD_NumFields);