[dragonegg] r178343 - If a type was the main variant already, then this code was trying to create it
Duncan Sands
baldrick at free.fr
Fri Mar 29 05:29:08 PDT 2013
Author: baldrick
Date: Fri Mar 29 07:29:07 2013
New Revision: 178343
URL: http://llvm.org/viewvc/llvm-project?rev=178343&view=rev
Log:
If a type was the main variant already, then this code was trying to create it
as a variant type of an null main type, causing newly added debug info checks to
fail. This caused a crash on dlasrt.f.
Modified:
dragonegg/trunk/src/Debug.cpp
Modified: dragonegg/trunk/src/Debug.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Debug.cpp?rev=178343&r1=178342&r2=178343&view=diff
==============================================================================
--- dragonegg/trunk/src/Debug.cpp (original)
+++ dragonegg/trunk/src/Debug.cpp Fri Mar 29 07:29:07 2013
@@ -915,15 +915,15 @@ DIType DebugInfo::getOrCreateType(tree t
if (I->second)
return DIType(cast<MDNode>(I->second));
- DIType MainTy;
- if (type != TYPE_MAIN_VARIANT(type) && TYPE_MAIN_VARIANT(type))
- MainTy = getOrCreateType(TYPE_MAIN_VARIANT(type));
-
- DIType Ty = createVariantType(type, MainTy);
- if (Ty.isValid())
- return Ty;
+ if (type != TYPE_MAIN_VARIANT(type) && TYPE_MAIN_VARIANT(type)) {
+ DIType MainTy = getOrCreateType(TYPE_MAIN_VARIANT(type));
+ DIType Ty = createVariantType(type, MainTy);
+ if (Ty.isValid())
+ return Ty;
+ }
// Work out details of type.
+ DIType Ty;
switch (TREE_CODE(type)) {
case ERROR_MARK:
case LANG_TYPE:
More information about the llvm-commits
mailing list