Summary: | [4.7 regression] bootstrap fails due to error: no previous prototype for 'find_all_hard_reg_sets' | ||
---|---|---|---|
Product: | gcc | Reporter: | Mikael Pettersson <mikpelinux> |
Component: | bootstrap | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bernds |
Priority: | P3 | ||
Version: | 4.7.0 | ||
Target Milestone: | 4.7.0 | ||
Host: | Target: | ||
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Mikael Pettersson
2011-10-23 11:09:11 UTC
The same error also occurs on sparc64-linux and arm-linux-gnueabi. It's caused by r180302: http://gcc.gnu.org/ml/gcc-cvs/2011-10/msg00898.html find_all_hard_reg_sets does have a prototype in rtl.h, but it's conditional on #ifdef HARD_CONST. Deleting the #ifdef causes build errors, but changing the include order in rtlanal.c so that hard-reg-set.h is included before rtl.h solves the bootstrap problem. Author: bernds Date: Mon Oct 24 11:03:12 2011 New Revision: 180376 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180376 Log: PR bootstrap/50836 * rtlanal.c: Swap includes of "hard-reg-set.h" and "rtl.h". Modified: trunk/gcc/ChangeLog trunk/gcc/rtlanal.c Fixed. To clarify, the problem occured because the C and C++ front-ends differ with regard to -Wmissing-prototypes (the C++ FE doesn't have it). People building stage2/3 in C++ mode won't see the error (but will see a warning in stage1), but people building in proper C mode (--disable-build-poststage1-with-cxx) will see the error. |