Bug 46597 - configure -enable-checking=... -enable-build-with-cxx and bootstrap is g++ 3.3 hit minor problem
Summary: configure -enable-checking=... -enable-build-with-cxx and bootstrap is g++ 3....
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: unknown
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-22 08:10 UTC by Jay
Modified: 2010-12-28 13:50 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jay 2010-11-22 08:10:58 UTC
I hit an error using g++ 3.3 to bootstrap on Darwin/ppc and configure -enable-build-with-cxx -enable-checking=...

../../gcc-4.5/gcc/alias.c: In function `rtx_def* find_base_value(rtx_def*)':
../../gcc-4.5/gcc/alias.c:1008: error: cannot convert `rtx_def*' to `const 

    case PLUS:
    case MINUS:
      {
	rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1); <== this line 


I suggest therefore rtl.h:


< #if defined ENABLE_RTL_FLAG_CHECKING && GCC_VERSION > 2007
> #if defined ENABLE_RTL_FLAG_CHECKING && ((!defined(__cplusplus) && GCC_VERSION > 2007) || GCC_VERSION > 3003)
#define RTL_FLAG_CHECK1(NAME, RTX, C1) __extension__            \


or even just:
> #if defined ENABLE_RTL_FLAG_CHECKING && GCC_VERSION > 3003


or like, not necessarily in rtl.h:

 #if GCC_VERSION <= 3003
 #undef ENABLE_RTL_FLAG_CHECKING


or

 #if GCC_VERSION <= 3003 && defined(__cplusplus)
 #undef ENABLE_RTL_FLAG_CHECKING

Some allowance might be made for other compilers that implement the extensions though?
Or, in C++, maybe use extensions less? e.g. inline functions might suit?


Thanks,
 - Jay
Comment 1 Jay 2010-12-28 13:50:06 UTC
I put #define ENABLE_CHECKING_GCC_VERSION ((GCC_VERSION > 3003) || (!defined(__cplusplus) && (GCC_VERSION > 2007)))
 in include/ansidecl.h after #define GCC_VERSION and I && this with the #if FOO_CHECKING in rtl.h, tree.h, ira-int.h.


Alternatively, reject g++ < 3.4 entirely, or if enable-checking.
Or, well, I'm using -disable-bootstrap, and probably checking is never enabled in the first phase anyway, so this all would just work if I didn't use that.
The patch is ok, but it might never make a difference if I didn't -disable-bootstrap.


But I really really really like -disable-bootstrap, given how little I build, which is still a very useful amount, it saves a ton (just libbackend.a and a small frontend, no libraries, and I patched out gmp/mpfr/mpc dependencies, so overall build is short even on slower machines (we run a range of machines..)).