[llvm-commits] [llvm-gcc-4.2] r136345 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Bob Wilson bob.wilson at apple.com
Fri Jul 29 09:46:31 PDT 2011


I'm seeing regressions at -O0 for ARM on the following tests:

SingleSource/UnitTests/ObjC/instance-method-metadata.compile
SingleSource/UnitTests/ObjC/property.compile
SingleSource/UnitTests/ObjC/protocols.compile
SingleSource/UnitTests/ObjC/trivial-interface.compile

They're hitting an assertion:

Assertion failed: (InitVal->getType() == getType()->getElementType() && "Initializer type must match GlobalVariable type"), function setInitializer, file /Volumes/LocalHD/bwilson/nightly/src/llvm/lib/VMCore/Globals.cpp, line 168.

I'll have to rebuild with debugging to figure out exactly what is causing this, but these changes seem like the most likely culprits.  The stack trace is:

(gdb) where
#0  0x900fb236 in __pthread_kill ()
#1  0x900faad7 in pthread_kill ()
#2  0x40dd527b in abort ()
#3  0x40dd52f2 in __assert_rtn ()
#4  0x40cfa2f7 in llvm::GlobalVariable::setInitializer ()
#5  0x00264a25 in llvm::GlobalValue::hasHiddenVisibility () at /llvmgcc42_Embedded~obj/dst-llvmCore/Developer/usr/local/include/llvm/GlobalValue.h:1384
#6  0x00264a25 in reset_initializer_llvm (decl=0x9d03f0) at /llvmgcc42_Embedded~obj/src/gcc/llvm-backend.cpp:1385
#7  0x00036b74 in generate_v2_protocols [inlined] () at /Volumes/LocalHD/bwilson/nightly/src/llvm-gcc-4.2/gcc/objc/objc-act.c:14476
#8  0x00036b74 in finish_objc () at /llvmgcc42_Embedded~obj/src/gcc/objc/objc-act.c:19331
#9  0x0003914b in objc_finish_file () at //llvmgcc42_Embedded~obj/src/gcc/objc/objc-act.c:841
#10 0x00093055 in c_common_parse_file (set_yydebug=0) at /llvmgcc42_Embedded~obj/src/gcc/c-opts.c:1327
#11 0x0023194d in toplev_main () at /llvmgcc42_Embedded~obj/src/gcc/toplev.c:1115
#12 0x000b9a8c in main () at /llvmgcc42_Embedded~obj/src/gcc/llvm-main.cpp:47

On Jul 28, 2011, at 2:13 AM, Duncan Sands wrote:

> Author: baldrick
> Date: Thu Jul 28 04:13:43 2011
> New Revision: 136345
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=136345&view=rev
> Log:
> Work around some fallout from the previous hack to work around
> problems with the new type system.  Will hopefully fix some
> buildbots.
> 
> Modified:
>    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
> 
> Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=136345&r1=136344&r2=136345&view=diff
> ==============================================================================
> --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
> +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Thu Jul 28 04:13:43 2011
> @@ -8699,14 +8699,15 @@
>     break;
>   }
> 
> -  // Check that the type of the lvalue is indeed that of a pointer to the tree
> -  // node.  Since LLVM has no void* type, don't insist that void* be converted
> -  // to a specific LLVM type.
> -  assert((VOID_TYPE_P(TREE_TYPE(exp)) ||
> -          LV->getType() == ConvertType(TREE_TYPE(exp))->getPointerTo()) &&
> -         "LValue of constant has wrong type!");
> +  // Ensure that the lvalue has the expected type.  It is simpler to do this
> +  // once here rather than in every helper.
> +  Type *Ty;
> +  if (VOID_TYPE_P(TREE_TYPE(exp)))
> +    Ty = Type::getInt8Ty(Context); // void* -> i8*.
> +  else
> +    Ty = ConvertType(TREE_TYPE(exp));
> 
> -  return LV;
> +  return TheFolder->CreateBitCast(LV, Ty->getPointerTo());
> }
> 
> Constant *TreeConstantToLLVM::EmitLV_Decl(tree exp) {
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list