Hi all,

I recently tried building on Fedora 16 64-bit and ran into the same
error others have seen:

/tmp/ccspin#.BqR0xk.s: Assembler messages:
/tmp/ccspin#.BqR0xk.s:1662: Error: bad register name `%st2'
/tmp/ccspin#.BqR0xk.s:1732: Error: operand type mismatch for `divss'
make[3]: *** [ieee_module_support.o] Error 1

The conflict occurs because the system include files assume SSE2
support while the Open64 build is set up to target the most generic
cpu possible -- for 32-bit code, it's i386 which does not support
SSE2.

My proposed fix follows -- we remove the restrictive options and just
let the compiler use the default options according to the host system.
 With this change I'm able to build on Fedora 16 since we
automatically tune for a cpu that supports SSE2 for any 64-bit host.
The only negative effect I can think of is that those who build binary
releases of Open64 will need to be careful about selecting a build
machine that matches the minimum target cpu requirements.

-David Coakley / AMD Open Source Compiler Engineering


Index: osprey/linux/make/gcommondefs
===================================================================
--- osprey/linux/make/gcommondefs       (revision 3843)
+++ osprey/linux/make/gcommondefs       (working copy)
@@ -166,16 +166,6 @@
   CCNAME = pathcc
   C++NAME = pathCC
   F90 = pathf90
-  ifeq ($(BUILD_TARGET), X8664)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
-  ifeq ($(BUILD_TARGET), IA32)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
   F77 = $(F90)
   AR      = ar
 endif

@@ -186,23 +176,6 @@
   C++NAME = openCC
   F90 = openf90
   F90_RTLIBS = -Wl,-Bstatic -lfortran -Wl,-Bdynamic
-
-  ifeq ($(BUILD_TARGET), X8664)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
-  ifeq ($(BUILD_TARGET), IA32)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
-  ifeq ($(BUILD_TARGET), IA64)
-    # only 64bit libraries set the BUILD_ARCH to X8664
-    CCNAME  +=
-    C++NAME +=
-    F90 +=
-  endif
   F77 = $(F90)
   AR      = ar
 endif
@@ -218,32 +191,15 @@
   CCNAME += -run-build=$(TOP_BUILDDIR) -L$(BUILD_AREA)/libopen64rt
-L$(BUILD_AREA)/libacml_mv
   C++NAME += -run-build=$(TOP_BUILDDIR)
   F90 += -run-build=$(TOP_BUILDDIR)
-
-  ifeq ($(BUILD_TARGET), X8664)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
-  ifeq ($(BUILD_TARGET), IA32)
-    CCNAME  += -march=anyx86
-    C++NAME += -march=anyx86
-    F90 += -march=anyx86
-  endif
-  ifeq ($(BUILD_TARGET), IA64)
-    # only 64bit libraries set the BUILD_ARCH to X8664
-    CCNAME  +=
-    C++NAME +=
-    F90 +=
-  endif
   F77 = $(F90)
   AR      = ar
 endif

 ifeq ($(BUILD_ARCH), IA32)
 # only 32bit libraries set the BUILD_TARGET to IA32
-  CCNAME  += -m32 -mno-sse2
-  C++NAME += -m32 -mno-sse2
-  F90 += -m32 -mno-sse2
+  CCNAME  += -m32
+  C++NAME += -m32
+  F90 += -m32
 endif

 ifeq ($(BUILD_ARCH), X8664)

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to