On Mon, Nov 07, 2011 at 09:44:25PM -0600, Joel Sherrill wrote:
> Hi,
> 
> powerpc-rtems does not compile on the head due
> to what appear to be changes in the way CPU
> features are represented for the arguments.
> 
> The compilation error is:
> 
> /users/joel/test-gcc/gcc-svn/gcc/config/rs6000/rs6000.c -o rs6000.o
> /users/joel/test-gcc/gcc-svn/gcc/config/rs6000/rs6000.c: In function
> ‘rs6000_option_override_internal’:
> /users/joel/test-gcc/gcc-svn/gcc/config/rs6000/rs6000.c:2826:3:
> error: ‘rs6000_explicit_options’ undeclared (first use in this
> function)
> /users/joel/test-gcc/gcc-svn/gcc/config/rs6000/rs6000.c:2826:3:
> note: each undeclared identifier is reported only once for each
> function it appears in
> At top level:
> 
> The code is in rtems.h is currently:
> 
> if (TARGET_E500) \
> { \
> if (TARGET_HARD_FLOAT && !rs6000_explicit_options.float_gprs) \
> rs6000_float_gprs = 1; \
> if (rs6000_float_gprs != 0 && !rs6000_explicit_options.spe) \
> rs6000_spe = 1; \
> if (rs6000_spe && !rs6000_explicit_options.spe_abi) \
> rs6000_spe_abi = 1; \
> } \
> 
> I think that changes to something like:
> 
> if (TARGET_E500) \
> { \
> if (!global_options_set.x_rs6000_float_gprs) \
> rs6000_float_gprs = 1; \
> if (!global_options_set.x_rs6000_spe) \
> rs6000_spe = 1; \
> if (!global_options_set.x_rs6000_spe_abi) \
> rs6000_spe_abi = 1; \
> } \
> 
> That compiles but I wanted a sanity check that it is the right
> transformation.

Yes, this is the right transformation.  Here is an untested patch that fixes
it:

2011-11-08  Michael Meissner  <meiss...@linux.vnet.ibm.com>

        * config/rs6000/rtems.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
        global_options_set instead of rs6000_explicit_options, which was
        removed on May 5th.

Index: gcc/config/rs6000/rtems.h
===================================================================
--- gcc/config/rs6000/rtems.h   (revision 181174)
+++ gcc/config/rs6000/rtems.h   (working copy)
@@ -61,11 +61,11 @@
   do {                                                                 \
     if (TARGET_E500)                                                   \
       {                                                                        
\
-        if (TARGET_HARD_FLOAT && !rs6000_explicit_options.float_gprs)  \
+        if (TARGET_HARD_FLOAT && !global_options_set.x_float_gprs)     \
           rs6000_float_gprs = 1;                                       \
-        if (rs6000_float_gprs != 0 && !rs6000_explicit_options.spe)    \
+        if (rs6000_float_gprs != 0 && !global_options_set.x_spe)       \
           rs6000_spe = 1;                                              \
-        if (rs6000_spe && !rs6000_explicit_options.spe_abi)            \
+        if (rs6000_spe && !global_options_set.x_spe_abi)               \
           rs6000_spe_abi = 1;                                          \
       }                                                                        
\
   } while(0)

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meiss...@linux.vnet.ibm.com     fax +1 (978) 399-6899

Reply via email to