Bug 16529 - [3.4/4.0 regression] ICE for: namespace-alias shall no be declared as the name of any other entity
Summary: [3.4/4.0 regression] ICE for: namespace-alias shall no be declared as the nam...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 3.4.1
: P2 normal
Target Milestone: 3.4.2
Assignee: Mark Mitchell
URL:
Keywords: accepts-invalid, ice-checking, ice-on-invalid-code
: 11762 (view as bug list)
Depends on:
Blocks:
 
Reported: 2004-07-13 19:06 UTC by Boris Kolpackov
Modified: 2005-02-11 17:04 UTC (History)
2 users (show)

See Also:
Host: i686-pc-linux-gnu
Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu
Known to work: 3.2.3
Known to fail: 3.3.4 3.4.0 4.0.0
Last reconfirmed: 2004-07-13 19:21:21


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Boris Kolpackov 2004-07-13 19:06:09 UTC
According to 7.3.2/4 

"A namespace-name or namespace-alias shall not be declared as the name of any
other entity in the same declarative region. A namespace-name defined at global
scope shall not be declared as the name of any other entity in any global scope
of the program. No diagnostic is required for a violation of this rule by
declarations in different translation units."

the following c++ is ill-formed:

namespace m
{
}

namespace n
{
  namespace m
  {
  }
}

namespace m = n::m;
Comment 1 Wolfgang Bangerth 2004-07-13 19:21:18 UTC
Confirmed. In fact, I get ICEs with newer versions of gcc with your code: 
 
g/x> /home/bangerth/bin/gcc-3.2.3/bin/c++ -c x.cc 
x.cc:12: redefinition of `m' 
x.cc:2: `m' previously declared here 
 
g/x> /home/bangerth/bin/gcc-3.3.4-pre/bin/c++ -c x.cc 
x.cc:12: error: redefinition of `m' 
x.cc:2: error: `m' previously declared here 
x.cc:12: internal compiler error: tree check: expected var_decl, have  
   namespace_decl in warn_extern_redeclared_static, at cp/decl.c:3278 
Please submit a full bug report, 
with preprocessed source if appropriate. 
See <URL:http://gcc.gnu.org/bugs.html> for instructions. 
 
g/x> /home/bangerth/bin/gcc-3.4-pre/bin/c++ -c x.cc 
x.cc:12: internal compiler error: tree check: expected var_decl, have 
namespace_decl in duplicate_decls, at cp/decl.c:1751 
Please submit a full bug report, 
with preprocessed source if appropriate. 
See <URL:http://gcc.gnu.org/bugs.html> for instructions. 
 
g/x> /home/bangerth/bin/gcc-3.5-pre/bin/c++ -c x.cc 
x.cc:12: internal compiler error: tree check: expected var_decl, have 
namespace_decl in duplicate_decls, at cp/decl.c:1745 
Please submit a full bug report, 
with preprocessed source if appropriate. 
See <URL:http://gcc.gnu.org/bugs.html> for instructions. 
 
The ICEs are a regression, as is the fact that we now don't even get to see 
the original error message any more. 
 
W. 
Comment 2 Boris Kolpackov 2004-07-13 19:38:01 UTC
Not sure about ICE; for me both gcc-3.4.0 and gcc-3.4.1 compile code above
without any diagnostic.
Comment 3 Andrew Pinski 2004-07-13 19:41:31 UTC
That is most likely because  Wolfgang has checking turned on. So this is ice-on-invalid-code, ICE-
checking (which means it ICE only when checking is turned on) and accepts-invalid.
Comment 4 Wolfgang Bangerth 2004-07-13 20:27:03 UTC
My versions are also a few days old already: 
  gcc version 3.4.1 20040612 (prerelease) 
  gcc version 3.5.0 20040628 (experimental) 
I guess it's time to update again. 
 
W. 
Comment 5 Mark Mitchell 2004-08-01 21:37:25 UTC
Working on a fix.
Comment 6 Mark Mitchell 2004-08-02 02:05:15 UTC
Fixed in GCC 3.4.2 and GCC 3.5.
Comment 7 Volker Reichelt 2005-02-11 16:58:05 UTC
Btw, fix and testcase are here (wrongly attributed to PR16489):
http://gcc.gnu.org/ml/gcc-cvs/2004-08/msg00026.html
Comment 8 Volker Reichelt 2005-02-11 17:04:33 UTC
*** Bug 11762 has been marked as a duplicate of this bug. ***