Bug 51792 - [4.7 regression] fortran bootstrap failure: no previous prototype for 'resolve_typebound_function'
Summary: [4.7 regression] fortran bootstrap failure: no previous prototype for 'resolv...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.7.0
: P4 normal
Target Milestone: 4.7.0
Assignee: Not yet assigned to anyone
URL:
Keywords: build
Depends on:
Blocks:
 
Reported: 2012-01-08 12:12 UTC by Mikael Pettersson
Modified: 2012-01-09 20:28 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2012-01-08 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mikael Pettersson 2012-01-08 12:12:33 UTC
Bootstrapping gcc-4.7-20120107 with fortran enabled and --disable-build-poststage1-with-cxx fails with:

/mnt/scratch/objdir47/./prev-gcc/xgcc -B/mnt/scratch/objdir47/./prev-gcc/ -B/mnt/scratch/install47/i686-pc-linux-gnu/bin/ -B/mnt/scratch/install47/i686-pc-linux-gnu/bin/ -B/mnt/scratch/install47/i686-pc-linux-gnu/lib/ -isystem /mnt/scratch/install47/i686-pc-linux-gnu/include -isystem /mnt/scratch/install47/i686-pc-linux-gnu/sys-include    -c  -DIN_GCC_FRONTEND -g -O2 -gtoggle -DIN_GCC   -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -Wold-style-definition -Wc++-compat   -DHAVE_CONFIG_H -I. -Ifortran -I/mnt/scratch/gcc-4.7-20120107/gcc -I/mnt/scratch/gcc-4.7-20120107/gcc/fortran -I/mnt/scratch/gcc-4.7-20120107/gcc/../include -I/mnt/scratch/gcc-4.7-20120107/gcc/../libcpp/include -I/home/mikpe/pkgs/linux-x86/gmp-5.0.2/include -I/home/mikpe/pkgs/linux-x86/mpfr-3.1.0/include -I/home/mikpe/pkgs/linux-x86/mpc-0.9/include  -I/mnt/scratch/gcc-4.7-20120107/gcc/../libdecnumber -I/mnt/scratch/gcc-4.7-20120107/gcc/../libdecnumber/bid -I../libdecnumber    /mnt/scratch/gcc-4.7-20120107/gcc/fortran/resolve.c -o fortran/resolve.o
/mnt/scratch/gcc-4.7-20120107/gcc/fortran/resolve.c:5891:1: error: no previous prototype for 'resolve_typebound_function' [-Werror=missing-prototypes]
cc1: all warnings being treated as errors

This is because r182754 (PR 46262 + 46328 + 51052 fix) deleted the 'static' for resolve_typebound_function, even though nothing outside of resolve.c calls it, and there is no previous prototype in scope.

Adding the 'static' back allows bootstrap to complete.

Yet another error missed due to the build-everything-with-c++-by-default change.
Comment 1 Paul Thomas 2012-01-08 17:07:03 UTC
Dear Mikael,

Thanks for that - the static was removed for one variant of the patches that you cite so that the function could be called form interface.c. Indeed, as you say, it did not throw up an error subsequently and so I missed it.

I am just about to commit on another PR, so I will fix this one at the same time.

Confirmed.

Cheers

Paul
Comment 2 Paul Thomas 2012-01-09 20:26:14 UTC
Author: pault
Date: Mon Jan  9 20:25:55 2012
New Revision: 183032

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183032
Log:
2012-01-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/51791
	* interface.c (matching_typebound_op): Drill down through
	possible parentheses to obtain base expression. Do not test for
	'class_ok' but, instead for the class structure components.
	* resolve.c (resolve_ordinary_assign): Extend error message for
	polymorphic assignment to advise checking for specific
	subroutine.

	PR fortran/51792
	* resolve.c (resolve_typebound_function): Restore 'static' to
	declaration.

2012-01-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/51791
	* gfortran.dg/typebound_operator_7.f03: Insert parentheses
	around base object in first assignment in main program.
	* gfortran.dg/typebound_operator_10.f03: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_10.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/interface.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/typebound_operator_7.f03
Comment 3 Paul Thomas 2012-01-09 20:28:43 UTC
Fixed on trunk

Paul