Bug 11022 - [3.3 regression] no warning for non-compatible macro redefine
Summary: [3.3 regression] no warning for non-compatible macro redefine
Alias: None
Product: gcc
Classification: Unclassified
Component: preprocessor (show other bugs)
Version: 3.3
: P2 normal
Target Milestone: 3.3.1
Assignee: Not yet assigned to anyone
Depends on:
Reported: 2003-05-29 02:42 UTC by Loren Rittle
Modified: 2003-06-19 05:40 UTC (History)
1 user (show)

See Also:
Host: i386-unknown-freebsd4.8
Known to work:
Known to fail:
Last reconfirmed:


Note You need to log in before you can comment on or make changes to this bug.
Description Loren Rittle 2003-05-29 02:42:45 UTC
Also seen on sparc-sun-solaris2.7 (3.3 prerelease).  Preprocess the following
self-contained test (yet not preprocessed for obvious reasons):

#define FOO
#define FOO 1
#define FOO
#define FOO 2

gcc 3.2.X and before used to warn about this.  If you delete the third line, gcc
3.3 will warn about it as expected.
Comment 1 Andrew Pinski 2003-05-29 03:13:45 UTC
I can confirm this on 3.3 branch (20030526) and mainline (20030528):
tin:~/src/gnu/gcctest>~/ia32_linux_gcc3_3/bin/gcc -Wall -W pr11022.c -c
tin:~/src/gnu/gcctest>gcc -Wall -W pr11022.c -c

tin:~/src/gnu/gcctest>~/ia32_linux_gcc3_2/bin/gcc -Wall -W pr11022.c -c
pr11022.c:2:1: warning: "FOO" redefined
pr11022.c:1:1: warning: this is the location of the previous definition
pr11022.c:3:1: warning: "FOO" redefined
pr11022.c:2:1: warning: this is the location of the previous definition
pr11022.c:4:1: warning: "FOO" redefined
pr11022.c:3:1: warning: this is the location of the previous definition
Comment 2 DJ Delorie 2003-06-01 18:58:34 UTC
3.4: http://gcc.gnu.org/ml/gcc-patches/2003-06/msg00054.html
Comment 3 Andrew Pinski 2003-06-02 03:54:33 UTC
Should this patch be also approved for 3.3?
Comment 4 Neil Booth 2003-06-02 05:44:41 UTC
Subject: Re:  [3.3 regression] no warning for non-compatible macro redefine

pinskia@physics.uc.edu wrote:-

> PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11022
> pinskia@physics.uc.edu changed:
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>             Summary|[3.3/3.4 regression]no      |[3.3 regression] no warning
>                    |warning for non-compatible  |for non-compatible macro
>                    |macro redefine              |redefine
> ------- Additional Comments From pinskia@physics.uc.edu  2003-06-02 03:54 -------
> Should this patch be also approved for 3.3?

Yes, it's approved for 3.3 too.

Comment 5 CVS Commits 2003-06-19 05:40:37 UTC
Subject: Bug 11022

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_3-branch
Changes by:	neil@gcc.gnu.org	2003-06-19 05:40:33

Modified files:
	gcc            : ChangeLog cppmacro.c 
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/gcc.dg/cpp: redef3.c 

Log message:
	PR preprocessor/11022
	* cppmacro.c (warn_of_redefinition): Handle cases where the two
	definitions have different numbers of tokens.
	* gcc.dg/cpp/redef3.c: New file.


Comment 6 Neil Booth 2003-06-19 05:40:43 UTC
Fix backported from 3.4.