public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/33975]  New: [4.1/4.2/4.3 Regression] Incomplete types may be derefenced
@ 2007-11-01 17:58 andrew dot stubbs at st dot com
  2007-11-02 13:59 ` [Bug c++/33975] " rguenth at gcc dot gnu dot org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: andrew dot stubbs at st dot com @ 2007-11-01 17:58 UTC (permalink / raw)
  To: gcc-bugs

The following C++ program should not compile:

struct S;
int f(S s);

S *p;
int i = f(*p);

Here an incomplete type is dereferenced as it is passed as a function
argument.

This is forbidden by the C++ standard, clause 3, paragraph 4 (penultimate
bullet). And anyway, how could you compile it to anything sensible without
knowing how big the type is?

Other attempts to dereference incomplete types are diagnosed correctly.

This used to be diagnosed in GCC 4.1.1, but is missing in GCC 4.1.2 onwards.


-- 
           Summary: [4.1/4.2/4.3 Regression] Incomplete types may be
                    derefenced
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: andrew dot stubbs at st dot com


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


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

* [Bug c++/33975] [4.1/4.2/4.3 Regression] Incomplete types may be derefenced
  2007-11-01 17:58 [Bug c++/33975] New: [4.1/4.2/4.3 Regression] Incomplete types may be derefenced andrew dot stubbs at st dot com
@ 2007-11-02 13:59 ` rguenth at gcc dot gnu dot org
  2007-11-12 18:01 ` janis at gcc dot gnu dot org
  2007-11-12 19:50 ` pinskia at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-11-02 13:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2007-11-02 13:59 -------
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |accepts-invalid
   Last reconfirmed|0000-00-00 00:00:00         |2007-11-02 13:59:28
               date|                            |


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


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

* [Bug c++/33975] [4.1/4.2/4.3 Regression] Incomplete types may be derefenced
  2007-11-01 17:58 [Bug c++/33975] New: [4.1/4.2/4.3 Regression] Incomplete types may be derefenced andrew dot stubbs at st dot com
  2007-11-02 13:59 ` [Bug c++/33975] " rguenth at gcc dot gnu dot org
@ 2007-11-12 18:01 ` janis at gcc dot gnu dot org
  2007-11-12 19:50 ` pinskia at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: janis at gcc dot gnu dot org @ 2007-11-12 18:01 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 711 bytes --]



------- Comment #2 from janis at gcc dot gnu dot org  2007-11-12 18:01 -------
Mainline now reports an error for this code:

elm3b187% /opt/gcc-nightly/trunk/bin/g++ 33975.cc
33975.cc: In function ‘int main()’:
33975.cc:8: error: invalid use of incomplete type ‘struct S’
33975.cc:1: error: forward declaration of ‘struct S’
33975.cc:8: error:   initializing argument 1 of ‘int f(S)’

The patch that fixed this for mainline:

    http://gcc.gnu.org/viewcvs?view=rev&rev=129968

    r129968 | jakub | 2007-11-07 19:27:27 +0000 (Wed, 07 Nov 2007)

Here's the source file I used:

struct S;
int f(S s);

int
main ()
{
  S *p;
  int i = f(*p);
}


-- 


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


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

* [Bug c++/33975] [4.1/4.2/4.3 Regression] Incomplete types may be derefenced
  2007-11-01 17:58 [Bug c++/33975] New: [4.1/4.2/4.3 Regression] Incomplete types may be derefenced andrew dot stubbs at st dot com
  2007-11-02 13:59 ` [Bug c++/33975] " rguenth at gcc dot gnu dot org
  2007-11-12 18:01 ` janis at gcc dot gnu dot org
@ 2007-11-12 19:50 ` pinskia at gcc dot gnu dot org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-11-12 19:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from pinskia at gcc dot gnu dot org  2007-11-12 19:50 -------
The issue here is an exact dup of bug 33501.

*** This bug has been marked as a duplicate of 33501 ***


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |DUPLICATE


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


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

end of thread, other threads:[~2007-11-12 19:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-01 17:58 [Bug c++/33975] New: [4.1/4.2/4.3 Regression] Incomplete types may be derefenced andrew dot stubbs at st dot com
2007-11-02 13:59 ` [Bug c++/33975] " rguenth at gcc dot gnu dot org
2007-11-12 18:01 ` janis at gcc dot gnu dot org
2007-11-12 19:50 ` pinskia at gcc dot gnu dot org

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).