https://llvm.org/bugs/show_bug.cgi?id=24335
Bug ID: 24335 Summary: In i386 mode, some SSE intrinsics lead to "error in backend: Do not know how to split the result of this operator!" Product: new-bugs Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: new bugs Assignee: unassignedb...@nondot.org Reporter: dimi...@andric.com CC: llvmbugs@cs.uiuc.edu Classification: Unclassified While doing a test build of the FreeBSD ports tree with clang trunk r241361, we noticed the following failures: http://package18.nyi.freebsd.org/data/headi386PR201377-default/2015-07-31_12h04m22s/logs/errors/lame-3.99.5_2.log http://package18.nyi.freebsd.org/data/headi386PR201377-default/2015-07-31_12h04m22s/logs/errors/speexdsp-1.2.r3_1.log Both of these are caused by the same thing, namely using SSE builtins while the target architecture is i386, and the target CPU is i486 (which is still the default on FreeBSD). For instance, in case of lame, it uses __builtin_ia32_sqrtps(), and a reduced testcase is: typedef int x0 __attribute__((__vector_size__(16))); x0 x1, x2; x3() { x2 = __builtin_ia32_sqrtps(x1); } In case of speexdsp, it uses __builtin_ia32_cvtps2pd(), and a reduced testcase is: __attribute__((__vector_size__(4 * sizeof(0)))) x0, x1; x2() { x1 = __builtin_ia32_cvtps2pd(x0); } For both testcases, you get the following backend crash report: $ clang -cc1 -triple i386 -emit-obj -w testcase.c SplitVectorResult #0: 0x2b9383a8: v4f32 = llvm.x86.sse.sqrt.ps 0x2b93830c, 0x2b938444 [ORD=5] [ID=0] fatal error: error in backend: Do not know how to split the result of this operator! I think the frontend should already produce a warning or an error on calling SSE intrinsics which are not supported by the backend. It seems a bit lame to crash this "late" in the compilation process... -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ LLVMbugs mailing list LLVMbugs@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs