[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