public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/26195]  New: pragma interface no longer handles explicit names
@ 2006-02-09 13:34 zak at transversal dot com
  2006-02-10 15:00 ` [Bug c++/26195] " zak at transversal dot com
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-09 13:34 UTC (permalink / raw)
  To: gcc-bugs

If I compile the two files below, where the interface/implementation
relationship is based on an explicitly-given name rather than the basename of
the files, then no implementation appears to be produced.

This occurs on both the 4.0 branch and trunk, and is a regression against
3.4.5.


With 3.3.6:
$ g++-3.3 -c -Wall -pedantic pragii2.cc && nm -A pragii2.o
pragii2.o:00000000 W _ZN1AC1Ev
pragii2.o:00000000 W _ZN1AC2Ev

With 3.4.5:
$ g++-3.4 -c -Wall -pedantic pragii2.cc && nm -A pragii2.o
pragii2.o:00000000 W _ZN1AC1Ev
pragii2.o:00000000 W _ZN1AC2Ev

With recent 4.0 branch:

$ /opt/gcc-svn/gcc-4_0-branch/bin/g++ -c -Wall -pedantic pragii2.cc && nm -A
pragii2.o
[no output]

With recent trunk:
$ /opt/gcc-svn/trunk/bin/g++ -c -Wall -pedantic pragii2.cc && nm -A pragii2.o
[no output]


///////////
// pragii.h
#pragma interface "pragii-imaginary.h"

struct A
{
        A() { }
};
///////////


/////////////
// pragii2.cc
#pragma implementation "pragii-imaginary.h"
#include "pragii.h"
/////////////



Failing compiler versions:

$ /opt/gcc-svn/gcc-4_0-branch/bin/g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4_0-branch/configure
--prefix=/opt/gcc-svn/gcc-4_0-branch --enable-threads --disable-libgcj
--enable-languages=c,c++
Thread model: posix
gcc version 4.0.3 20060209 (prerelease)

$ /opt/gcc-svn/trunk/bin/g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../trunk/configure --prefix=/opt/gcc-svn/trunk
--enable-threads
Thread model: posix
gcc version 4.2.0 20060203 (experimental)


-- 
           Summary: pragma interface no longer handles explicit names
           Product: gcc
           Version: 4.0.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: zak at transversal dot com
 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=26195


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

* [Bug c++/26195] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
@ 2006-02-10 15:00 ` zak at transversal dot com
  2006-02-10 15:53 ` zak at transversal dot com
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-10 15:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from zak at transversal dot com  2006-02-10 15:00 -------
I think the bug here is that handle_pragma_interface in gcc/cp/lex.c is calling
get_file_info(filename), which refers to the name in the #pragma, rather than
get_file_info(lbasename(input_filename)) -- hence it is updating the wrong 
c_fileinfo struct.

This was changed here:

http://gcc.gnu.org/viewcvs/branches/gcc-4_0-branch/gcc/cp/lex.c?r1=87774&r2=87786&diff_format=h

Reverting that one line appears to fix the problem, although I haven't (yet)
tested it extensively.


-- 


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


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

* [Bug c++/26195] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
  2006-02-10 15:00 ` [Bug c++/26195] " zak at transversal dot com
@ 2006-02-10 15:53 ` zak at transversal dot com
  2006-02-10 17:05 ` zak at transversal dot com
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-10 15:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from zak at transversal dot com  2006-02-10 15:53 -------
On thinking about this further, I don't understand the application of lbasename
to the input_filename before it is passed to get_fileinfo. I included this for
consistency with the code in cxx_make_type that checks for the interface_*
settings.

However, doesn't this mean that files included as "file1.h", "dir1/file1.h" and
"dir2/file1.h" will share the same c_fileinfo struct for these purposes? The
calls to get_fileinfo(input_filename) in gcc/c-lex.c, by constrast, do not use
lbasename.


-- 


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


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

* [Bug c++/26195] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
  2006-02-10 15:00 ` [Bug c++/26195] " zak at transversal dot com
  2006-02-10 15:53 ` zak at transversal dot com
@ 2006-02-10 17:05 ` zak at transversal dot com
  2006-02-13 18:47 ` [Bug c++/26195] [4.0 regression] " zak at transversal dot com
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-10 17:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from zak at transversal dot com  2006-02-10 17:05 -------
After making the change suggested in comment #1, the following test case
demonstrates the problem mentioned in comment #2.

$ g++ -Wall -pedantic -I. foo.cc && nm -A foo.o
[no output]

If you switch the name in the pragma implementation directive to "dir2/foo.h",
then the implementations of *both* headers are output:
foo.o:         U __gxx_personality_v0
foo.o:00000000 W _ZN2A1C1Ev
foo.o:00000000 W _ZN2A1C2Ev
foo.o:00000000 W _ZN2A2C1Ev
foo.o:00000000 W _ZN2A2C2Ev


In 3.4.5, the implementation of the header with the matching pragma interface
directive is correctly output in each case.


I'm currently testing a patch that, in addition to the above change, removes
all the uses of lbasename in this context (two in decl.c, one in lex.c and one
in semantics.c, all in code specific to handling #pragma interface and
introduced in revision 87786).



// foo.cc
#pragma implementation "dir1/foo.h"
#include "dir1/foo.h"


// dir1/foo.h
#pragma interface "dir1/foo.h"
#include "dir2/foo.h"

struct A1
{
        A1() { }
};


// dir2/foo.h
#pragma interface "dir2/foo.h"

struct A2
{
        A2() { }
};


-- 


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


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

* [Bug c++/26195] [4.0 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (2 preceding siblings ...)
  2006-02-10 17:05 ` zak at transversal dot com
@ 2006-02-13 18:47 ` zak at transversal dot com
  2006-02-13 18:48 ` [Bug c++/26195] [4.0/4.1/4.2 " pinskia at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-13 18:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from zak at transversal dot com  2006-02-13 18:46 -------
Marking as 4.0 regression, filling in versions known to work/fail.

Here is a patch, tested against mainline, which seems to fix this:

  http://gcc.gnu.org/ml/gcc-patches/2006-02/msg01002.html


-- 

zak at transversal dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
      Known to fail|                            |4.0.3 4.1.0 4.2.0
      Known to work|                            |3.3.6 3.4.5
            Summary|pragma interface no longer  |[4.0 regression] pragma
                   |handles explicit names      |interface no longer handles
                   |                            |explicit names


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (3 preceding siblings ...)
  2006-02-13 18:47 ` [Bug c++/26195] [4.0 regression] " zak at transversal dot com
@ 2006-02-13 18:48 ` pinskia at gcc dot gnu dot org
  2006-02-13 22:18 ` mmitchel at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-02-13 18:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from pinskia at gcc dot gnu dot org  2006-02-13 18:48 -------
Confirmed.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2006-
                   |                            |02/msg01002.html
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |link-failure
   Last reconfirmed|0000-00-00 00:00:00         |2006-02-13 18:48:40
               date|                            |
            Summary|[4.0 regression] pragma     |[4.0/4.1/4.2 regression]
                   |interface no longer handles |pragma interface no longer
                   |explicit names              |handles explicit names
   Target Milestone|---                         |4.0.3


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (4 preceding siblings ...)
  2006-02-13 18:48 ` [Bug c++/26195] [4.0/4.1/4.2 " pinskia at gcc dot gnu dot org
@ 2006-02-13 22:18 ` mmitchel at gcc dot gnu dot org
  2006-02-14  9:02 ` mmitchel at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-13 22:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from mmitchel at gcc dot gnu dot org  2006-02-13 22:18 -------
(I'd love to see these #pragmas go away; as indicated in the manual, they have
very little utility.  But, that's another conversation for another day.)

If you remove the lbasename calls, won't you see other problems in the
non-explicit case?  If you #include the interface header using one path (or it
is included from another header, with something like #include "../../foo.h"),
and the implementation file uses a different path, I would think that then
things wouldn't match up.  

The manual suggests that the explicit filename directives are needed precisely
when you have multiple headers with the same name.  Therefore, it seems to me
that lbasename should be used for the implicit case, and not used in the
explicit case.


-- 


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (5 preceding siblings ...)
  2006-02-13 22:18 ` mmitchel at gcc dot gnu dot org
@ 2006-02-14  9:02 ` mmitchel at gcc dot gnu dot org
  2006-02-14 12:08 ` zak at transversal dot com
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-14  9:02 UTC (permalink / raw)
  To: gcc-bugs



-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (6 preceding siblings ...)
  2006-02-14  9:02 ` mmitchel at gcc dot gnu dot org
@ 2006-02-14 12:08 ` zak at transversal dot com
  2006-02-24  0:31 ` mmitchel at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-02-14 12:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from zak at transversal dot com  2006-02-14 12:08 -------
(We are currently using these pragmas extensively to ensure that various
symbols are laid down *only* in low-level libraries, as a partial workaround
for the COMDAT/dlopen issues described in
http://gcc.gnu.org/ml/gcc/2004-10/msg01118.html)


My patch doesn't touch the lbasename call used to create the implicit parameter
to the directives (ie the one stored in ifiles and passed to interface_strcmp)
-- so the path by which the file is included shouldn't affect the matching
between pragmas without explicit parameters.

The change only affects the filename passed to get_fileinfo. If a header is
included in one place as "[path1]/foo.h" and in another as "[path2]/foo.h",
then there will be two c_fileinfo structs, but both will have processed the
pragmas in the same way (and with the same implicit parameter "foo.h"), causing
interface_only and interface_unknown to be identical in the two structs.

Even if it was necessary, retaining the lbasename calls for the implicit case
doesn't seem practical as the calls to get_fileinfo are made precisely to find
out whether these pragmas are in effect (by looking at interface_only and
interface_unknown) -- hence the argument to the call can't easily depend on
those same pragmas.


-- 


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (7 preceding siblings ...)
  2006-02-14 12:08 ` zak at transversal dot com
@ 2006-02-24  0:31 ` mmitchel at gcc dot gnu dot org
  2006-03-01 15:57 ` zak at transversal dot com
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-24  0:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from mmitchel at gcc dot gnu dot org  2006-02-24 00:26 -------
This issue will not be resolved in GCC 4.1.0; retargeted at GCC 4.1.1.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.3                       |4.1.1


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (8 preceding siblings ...)
  2006-02-24  0:31 ` mmitchel at gcc dot gnu dot org
@ 2006-03-01 15:57 ` zak at transversal dot com
  2006-04-18 16:18 ` bonzini at gnu dot org
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: zak at transversal dot com @ 2006-03-01 15:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from zak at transversal dot com  2006-03-01 15:57 -------
The previous target milestone was 4.0.3 -- does the retargeting mean that this
regression will not be fixed on that branch at all?


-- 


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (9 preceding siblings ...)
  2006-03-01 15:57 ` zak at transversal dot com
@ 2006-04-18 16:18 ` bonzini at gnu dot org
  2006-05-25  2:40 ` mmitchel at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: bonzini at gnu dot org @ 2006-04-18 16:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from bonzini at gnu dot org  2006-04-18 16:18 -------
No, except in the unlikely case that the fix is hard to backport to 4.0.x. 
Backports to older release branches (in this case 4.0.x) are evaluated on a
case-by-case basis.


-- 


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (10 preceding siblings ...)
  2006-04-18 16:18 ` bonzini at gnu dot org
@ 2006-05-25  2:40 ` mmitchel at gcc dot gnu dot org
  2006-09-07  6:53 ` jason at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-05-25  2:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from mmitchel at gcc dot gnu dot org  2006-05-25 02:33 -------
Will not be fixed in 4.1.1; adjust target milestone to 4.1.2.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.1.1                       |4.1.2


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


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

* [Bug c++/26195] [4.0/4.1/4.2 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (11 preceding siblings ...)
  2006-05-25  2:40 ` mmitchel at gcc dot gnu dot org
@ 2006-09-07  6:53 ` jason at gcc dot gnu dot org
  2006-09-07  7:08 ` [Bug c++/26195] [4.0/4.1 " jason at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-09-07  6:53 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jason at gcc dot gnu dot org  2006-09-07 06:53 -------
Subject: Bug 26195

Author: jason
Date: Thu Sep  7 06:53:21 2006
New Revision: 116740

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116740
Log:
        PR c++/26195
        * decl.c (make_rtl_for_nonlocal_decl),
        (start_preparsed_function): Don't use lbasename on
        input_filename when calling get_fileinfo.
        * semantics.c (begin_class_definition): Likewise.
        * lex.c (cxx_make_type): Likewise.
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        not on the parameter to the directive.

Added:
    trunk/gcc/testsuite/g++.dg/ext/interface2.C
    trunk/gcc/testsuite/g++.dg/ext/interface2a.h
    trunk/gcc/testsuite/g++.dg/ext/interface2b.cc
    trunk/gcc/testsuite/g++.dg/ext/interface3/
    trunk/gcc/testsuite/g++.dg/ext/interface3/dir1/
    trunk/gcc/testsuite/g++.dg/ext/interface3/dir1/interface3.h
    trunk/gcc/testsuite/g++.dg/ext/interface3/dir2/
    trunk/gcc/testsuite/g++.dg/ext/interface3/dir2/interface3.h
    trunk/gcc/testsuite/g++.dg/ext/interface3/interface3a.C
    trunk/gcc/testsuite/g++.dg/ext/interface3/interface3a2.cc
    trunk/gcc/testsuite/g++.dg/ext/interface3/interface3b.C
    trunk/gcc/testsuite/g++.dg/ext/interface3/interface3b2.cc
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl.c
    trunk/gcc/cp/lex.c
    trunk/gcc/cp/semantics.c


-- 


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


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

* [Bug c++/26195] [4.0/4.1 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (12 preceding siblings ...)
  2006-09-07  6:53 ` jason at gcc dot gnu dot org
@ 2006-09-07  7:08 ` jason at gcc dot gnu dot org
  2006-09-07 22:27 ` jason at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-09-07  7:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from jason at gcc dot gnu dot org  2006-09-07 07:08 -------
The patch looked good to me, so I applied it.  Sorry for the delay.


-- 

jason at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jason at gcc dot gnu dot org
                   |dot org                     |
             Status|NEW                         |ASSIGNED
      Known to fail|4.0.3 4.1.0 4.2.0           |4.0.3 4.1.0
      Known to work|3.3.6 3.4.5                 |3.3.6 3.4.5 4.2.0
   Last reconfirmed|2006-02-13 18:48:40         |2006-09-07 07:08:04
               date|                            |
            Summary|[4.0/4.1/4.2 regression]    |[4.0/4.1 regression] pragma
                   |pragma interface no longer  |interface no longer handles
                   |handles explicit names      |explicit names


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


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

* [Bug c++/26195] [4.0/4.1 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (13 preceding siblings ...)
  2006-09-07  7:08 ` [Bug c++/26195] [4.0/4.1 " jason at gcc dot gnu dot org
@ 2006-09-07 22:27 ` jason at gcc dot gnu dot org
  2006-09-07 22:38 ` jason at gcc dot gnu dot org
  2006-09-07 23:04 ` jason at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-09-07 22:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from jason at gcc dot gnu dot org  2006-09-07 22:27 -------
Subject: Bug 26195

Author: jason
Date: Thu Sep  7 22:27:01 2006
New Revision: 116763

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116763
Log:
        PR c++/26195
        * decl.c (make_rtl_for_nonlocal_decl),
        (start_preparsed_function): Don't use lbasename on
        input_filename when calling get_fileinfo.
        * semantics.c (begin_class_definition): Likewise.
        * lex.c (cxx_make_type): Likewise.
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        not on the parameter to the directive.

        PR c++/26696
        * cvt.c (convert_to_void): Replace a subexpression with no side
        effects with void_zero_node.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        (get_first_fn): Ditto.
        * decl.c (grokdeclarator): No need to look through COMPONENT_REF.

        PR c++/26571
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
        where the name is a type used incorrectly.

        PR c++/26671
        * typeck.c (maybe_warn_about_returning_address_of_local): Look
        through COMPONENT_REF and ARRAY_REF.

        PR c++/26102
        * name-lookup.c (do_class_using_decl): Try to find the base even
        if bases_dependent_p.
        * pt.c (type_dependent_expression_p): A USING_DECL is dependent.

        PR c++/19809
        * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.

Modified:
    branches/gcc-4_1-branch/gcc/cp/ChangeLog
    branches/gcc-4_1-branch/gcc/cp/cvt.c
    branches/gcc-4_1-branch/gcc/cp/decl.c
    branches/gcc-4_1-branch/gcc/cp/lex.c
    branches/gcc-4_1-branch/gcc/cp/name-lookup.c
    branches/gcc-4_1-branch/gcc/cp/parser.c
    branches/gcc-4_1-branch/gcc/cp/pt.c
    branches/gcc-4_1-branch/gcc/cp/semantics.c
    branches/gcc-4_1-branch/gcc/cp/tree.c
    branches/gcc-4_1-branch/gcc/cp/typeck.c


-- 


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


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

* [Bug c++/26195] [4.0/4.1 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (14 preceding siblings ...)
  2006-09-07 22:27 ` jason at gcc dot gnu dot org
@ 2006-09-07 22:38 ` jason at gcc dot gnu dot org
  2006-09-07 23:04 ` jason at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-09-07 22:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from jason at gcc dot gnu dot org  2006-09-07 22:38 -------
Subject: Bug 26195

Author: jason
Date: Thu Sep  7 22:38:03 2006
New Revision: 116764

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116764
Log:
        PR c++/26195
        * decl.c (make_rtl_for_nonlocal_decl),
        (start_preparsed_function): Don't use lbasename on
        input_filename when calling get_fileinfo.
        * semantics.c (begin_class_definition): Likewise.
        * lex.c (cxx_make_type): Likewise.
        (handle_pragma_interface): Call get_fileinfo on input_filename,
        not on the parameter to the directive.

        PR c++/26696
        * cvt.c (convert_to_void): Replace a subexpression with no side
        effects with void_zero_node.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        (get_first_fn): Ditto.
        * decl.c (grokdeclarator): No need to look through COMPONENT_REF.

        PR c++/26571
        * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
        where the name is a type used incorrectly.

        PR c++/26671
        * typeck.c (maybe_warn_about_returning_address_of_local): Look
        through COMPONENT_REF and ARRAY_REF.

        PR c++/19809
        * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.

Modified:
    branches/gcc-4_0-branch/gcc/cp/ChangeLog
    branches/gcc-4_0-branch/gcc/cp/cvt.c
    branches/gcc-4_0-branch/gcc/cp/decl.c
    branches/gcc-4_0-branch/gcc/cp/lex.c
    branches/gcc-4_0-branch/gcc/cp/parser.c
    branches/gcc-4_0-branch/gcc/cp/pt.c
    branches/gcc-4_0-branch/gcc/cp/semantics.c
    branches/gcc-4_0-branch/gcc/cp/tree.c
    branches/gcc-4_0-branch/gcc/cp/typeck.c


-- 


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


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

* [Bug c++/26195] [4.0/4.1 regression] pragma interface no longer handles explicit names
  2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
                   ` (15 preceding siblings ...)
  2006-09-07 22:38 ` jason at gcc dot gnu dot org
@ 2006-09-07 23:04 ` jason at gcc dot gnu dot org
  16 siblings, 0 replies; 18+ messages in thread
From: jason at gcc dot gnu dot org @ 2006-09-07 23:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from jason at gcc dot gnu dot org  2006-09-07 23:04 -------
fixed in 4.0, 4.1, 4.2


-- 

jason at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


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


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

end of thread, other threads:[~2006-09-07 23:04 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-09 13:34 [Bug c++/26195] New: pragma interface no longer handles explicit names zak at transversal dot com
2006-02-10 15:00 ` [Bug c++/26195] " zak at transversal dot com
2006-02-10 15:53 ` zak at transversal dot com
2006-02-10 17:05 ` zak at transversal dot com
2006-02-13 18:47 ` [Bug c++/26195] [4.0 regression] " zak at transversal dot com
2006-02-13 18:48 ` [Bug c++/26195] [4.0/4.1/4.2 " pinskia at gcc dot gnu dot org
2006-02-13 22:18 ` mmitchel at gcc dot gnu dot org
2006-02-14  9:02 ` mmitchel at gcc dot gnu dot org
2006-02-14 12:08 ` zak at transversal dot com
2006-02-24  0:31 ` mmitchel at gcc dot gnu dot org
2006-03-01 15:57 ` zak at transversal dot com
2006-04-18 16:18 ` bonzini at gnu dot org
2006-05-25  2:40 ` mmitchel at gcc dot gnu dot org
2006-09-07  6:53 ` jason at gcc dot gnu dot org
2006-09-07  7:08 ` [Bug c++/26195] [4.0/4.1 " jason at gcc dot gnu dot org
2006-09-07 22:27 ` jason at gcc dot gnu dot org
2006-09-07 22:38 ` jason at gcc dot gnu dot org
2006-09-07 23:04 ` jason 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).