[llvm-commits] [llvm-gcc-4.2] r71555 - in /llvm-gcc-4.2/trunk/gcc: llvm-convert.cpp llvm-internal.h

Bill Wendling wendling at apple.com
Tue Aug 11 17:41:29 PDT 2009


> Author: baldrick
> Date: Tue May 12 09:54:03 2009
> New Revision: 71555
>
> URL: http://llvm.org/viewvc/llvm-project?rev=71555&view=rev
> Log:
> Reapply r71425, tweaked to be more laid back about
> how void* is converted to an LLVM type.

Duncan,

This patch is breaking on this program:

$  cat t.ii
typedef void (*Func) ();
typedef long long m64 __attribute__((__vector_size__(8),  
__may_alias__));
static inline m64 __attribute__((__always_inline__, __nodebug__))  
_mm_set1_pi16() {}
template <class MM>
static void Bork() {
   const m64 mmx_0x00ff = _mm_set1_pi16();
}
struct A {};
Func qt_functionForModeSolid_MMX[] = {
   Bork<A>
};
$ llvm-g++ -mmmx -pipe -m64 -c testcase.ii
Assertion failed: ((Result == 0 || VOID_TYPE_P(TREE_TYPE(exp)) ||  
Result->getType() == ConvertType(TREE_TYPE(exp))) && "Value has wrong  
type!"), function Emit, file ../../Leela-gcc/gcc/llvm-convert.cpp,  
line 1060.
testcase.ii: In function ‘void func1(int)’:
testcase.ii:6: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://llvm.org/bugs/> for instructions.

I'm going to back this part of the patch out. Please investigate.

Thanks!
-bw



More information about the llvm-commits mailing list