public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug pending/19514] New: bogus warning about complex "integer" types from typedef
@ 2005-01-18 22:02 gcc-bugzilla at gcc dot gnu dot org
  2005-01-18 22:20 ` [Bug pending/19514] " joseph at codesourcery dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: gcc-bugzilla at gcc dot gnu dot org @ 2005-01-18 22:02 UTC (permalink / raw)
  To: gcc-bugs

NOTE: Defaulting component because reported component no longer exists

When compiling the following two lines:

typedef double R;
typedef R _Complex C;

with the flags -std=c99 -pedantic, gcc gives the bogus warning:

foo.c:2: warning: ISO C does not support complex integer types

(Code based on the above definitions seems to work, however.)

Environment:
System: Linux ab-initio 2.4.25 #1 SMP Fri Jul 9 17:11:47 EDT 2004 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../configure --prefix=/usr/local/gcc-3.4 --enable-languages=c,c++,f77

How-To-Repeat:
Create a file foo.c with the above two lines, and compile with
	gcc -std=c99 -pedantic -c foo.c
------- Additional Comments From stevenj at ab-initio dot mit dot edu  2005-01-18 22:02 -------
Fix:
Simply ignoring the warning seems to work okay.

-- 
           Summary: bogus warning about complex "integer" types from typedef
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: pending
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: stevenj at ab-initio dot mit dot edu
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug pending/19514] bogus warning about complex "integer" types from typedef
  2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
@ 2005-01-18 22:20 ` joseph at codesourcery dot com
  2005-01-18 22:53 ` pinskia at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: joseph at codesourcery dot com @ 2005-01-18 22:20 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From joseph at codesourcery dot com  2005-01-18 22:20 -------
Subject: Re:  New: bogus warning about complex "integer"
 types from typedef

On Tue, 18 Jan 2005, gcc-bugzilla at gcc dot gnu dot org wrote:

> When compiling the following two lines:
> 
> typedef double R;
> typedef R _Complex C;

This is not valid code; you can't use _Complex together with a typedef, 
only together with "float", "double" or "long double" in one of the forms 
listed in C99.

The misleading diagnostic is a bug, which has been fixed in mainline: you 
now get the error

t.c:2: error: two or more data types in declaration specifiers



-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug pending/19514] bogus warning about complex "integer" types from typedef
  2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
  2005-01-18 22:20 ` [Bug pending/19514] " joseph at codesourcery dot com
@ 2005-01-18 22:53 ` pinskia at gcc dot gnu dot org
  2005-01-18 22:57 ` stevenj at fftw dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-01-18 22:53 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-01-18 22:52 -------
Invalid based on JSM's comment.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug pending/19514] bogus warning about complex "integer" types from typedef
  2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
  2005-01-18 22:20 ` [Bug pending/19514] " joseph at codesourcery dot com
  2005-01-18 22:53 ` pinskia at gcc dot gnu dot org
@ 2005-01-18 22:57 ` stevenj at fftw dot org
  2005-01-18 23:15 ` stevenj at fftw dot org
  2005-01-18 23:53 ` joseph at codesourcery dot com
  4 siblings, 0 replies; 6+ messages in thread
From: stevenj at fftw dot org @ 2005-01-18 22:57 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From stevenj at fftw dot org  2005-01-18 22:56 -------
Subject: Re:  bogus warning about complex "integer" types
 from typedef

On Tue, 18 Jan 2005, joseph at codesourcery dot com wrote:
>> typedef double R;
>> typedef R _Complex C;
>
> This is not valid code; you can't use _Complex together with a typedef,
> only together with "float", "double" or "long double" in one of the forms
> listed in C99.

My copy of the C99 draft standard states (sec. 6.7.7):

 	"A typedef declaration does not introduce a new type, only a
 	 synonym for the type so specified."

According to this, "R complex" should be a synonym for "double complex", 
and therefore should be valid code.  What justification do you have for 
claiming otherwise?


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug pending/19514] bogus warning about complex "integer" types from typedef
  2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2005-01-18 22:57 ` stevenj at fftw dot org
@ 2005-01-18 23:15 ` stevenj at fftw dot org
  2005-01-18 23:53 ` joseph at codesourcery dot com
  4 siblings, 0 replies; 6+ messages in thread
From: stevenj at fftw dot org @ 2005-01-18 23:15 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From stevenj at fftw dot org  2005-01-18 23:15 -------
Subject: Re:  bogus warning about complex "integer" types
 from typedef

Okay, I guess I see what you mean.  "double" in "double _Complex" is 
arguably not a "type", but rather a type-specifier as defined in 6.7.2, 
and the "each list of type-specifiers shall be one of the following sets",
a prescribed list of combinations that does not include typedefs.

What an annoyance; one has to define R via the preprocessor, then, in 
order to use consistent floating-point precisions everywhere in a program.


-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug pending/19514] bogus warning about complex "integer" types from typedef
  2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
                   ` (3 preceding siblings ...)
  2005-01-18 23:15 ` stevenj at fftw dot org
@ 2005-01-18 23:53 ` joseph at codesourcery dot com
  4 siblings, 0 replies; 6+ messages in thread
From: joseph at codesourcery dot com @ 2005-01-18 23:53 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From joseph at codesourcery dot com  2005-01-18 23:52 -------
Subject: Re:  bogus warning about complex "integer" types
 from typedef

On Tue, 18 Jan 2005, stevenj at fftw dot org wrote:

> Okay, I guess I see what you mean.  "double" in "double _Complex" is 
> arguably not a "type", but rather a type-specifier as defined in 6.7.2, 
> and the "each list of type-specifiers shall be one of the following sets",
> a prescribed list of combinations that does not include typedefs.

Yes, that's my point.  "double _Complex" is one valid list of type 
specifiers.  "typedef name" is another, listed separately - a single type 
specifier, not part of any valid combinations.



-- 


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-01-18 23:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-01-18 22:02 [Bug pending/19514] New: bogus warning about complex "integer" types from typedef gcc-bugzilla at gcc dot gnu dot org
2005-01-18 22:20 ` [Bug pending/19514] " joseph at codesourcery dot com
2005-01-18 22:53 ` pinskia at gcc dot gnu dot org
2005-01-18 22:57 ` stevenj at fftw dot org
2005-01-18 23:15 ` stevenj at fftw dot org
2005-01-18 23:53 ` joseph at codesourcery dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).