http://llvm.org/bugs/show_bug.cgi?id=11439
Tanya Lattner <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #2 from Tanya Lattner <[email protected]> 2011-11-28 17:22:11 CST --- This is a code generation issue in clang for x86_64. I believe it should be fixed in r145312. Basically, for double3 it was trying to coerce it a double2 which is obviously incorrect. Previous LLVM IR output from clang: define <2 x double> @add(<2 x double> %x.coerce) nounwind { entry: %retval = alloca <3 x double>, align 32 %coerce = alloca <3 x double>, align 32 %x.addr = alloca <3 x double>, align 32 %0 = bitcast <3 x double>* %coerce to <2 x double>* store <2 x double> %x.coerce, <2 x double>* %0 %x = load <3 x double>* %coerce, align 32 store <3 x double> %x, <3 x double>* %x.addr, align 32 %1 = load <3 x double>* %x.addr, align 32 %add = fadd <3 x double> %1, <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00> store <3 x double> %add, <3 x double>* %retval %2 = bitcast <3 x double>* %retval to <2 x double>* %3 = load <2 x double>* %2, align 1 ret <2 x double> %3 } With my fix: ; ModuleID = 'x.c' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-unknown-unknown" define <3 x double> @add(<3 x double> %x) nounwind { entry: %x.addr = alloca <3 x double>, align 32 store <3 x double> %x, <3 x double>* %x.addr, align 32 %0 = load <3 x double>* %x.addr, align 32 %add = fadd <3 x double> %0, <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00> ret <3 x double> %add } -- Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ LLVMbugs mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs
