This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/49257] -mfpmath=sse generates x87 instructions on 32 bits OS


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49257

--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2011-06-01 17:57:44 UTC ---
The problem is in floatunsdidf2 expander that is currently disabled on x86_32
due to TARGET_KEEPS_VECTOR_ALIGNED_STACK. Without this expander, gcc generates
unsigned DImode->XFmode conversion using floatdixf pattern with XFmode x87
registers.

Since latest x86_32 ABI linux ABI mandates 16 byte alignment, we can perhaps:

Index: config/i386/linux.h
===================================================================
--- config/i386/linux.h    (revision 174535)
+++ config/i386/linux.h    (working copy)
@@ -24,3 +24,6 @@
 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"

 #define MD_UNWIND_SUPPORT "config/i386/linux-unwind.h"
+
+#undef TARGET_KEEPS_VECTOR_ALIGNED_STACK
+#define TARGET_KEEPS_VECTOR_ALIGNED_STACK 1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]