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

           Summary: Global options changes on Sept. 29th, breaks powerpc
                    linux64 build
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: target
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: meiss...@gcc.gnu.org


Moving target_flags into a structure breaks the ppc linux64 build.

The file config/rs6000/options-default.h contains the lines:
#if TARGET_AIX
#define OPT_64 "maix64"
#define OPT_32 "maix32"
#else
#define OPT_64 "m64"
#define OPT_32 "m32"
#endif

The file config/rs6000/linux64.h contains this redefinition:
#undef    TARGET_AIX
#define    TARGET_AIX TARGET_64BIT

In the past, options.h was generated as:
extern int target_flags;
    /* ... */
#define TARGET_64BIT ((target_flags & MASK_64BIT) != 0)

Now it generates:
#define target_flags global_options.x_target_flags
    /* ... */
#define TARGET_64BIT ((target_flags & MASK_64BIT) != 0)

This means that anything that includes tm.h will get an error, stating that '.'
is not allowed in preprocessing tokens.  In the past it was relying on
target_flags being considered 0 by the preprocessor since it wasn't defined.

Reply via email to