[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread ktietz at gcc dot gnu dot org
-- ktietz at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P2 Target Milestone|--- |4.4.0 http://gcc.

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread nightstrike at gmail dot com
--- Comment #9 from nightstrike at gmail dot com 2009-02-14 22:56 --- Verified to fail on win32 and win64, not just win64. Can someone with sufficient privileges adjust "Target"? Verified to work in 4.3, so this is a regression. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39179

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread ktietz at gcc dot gnu dot org
--- Comment #8 from ktietz at gcc dot gnu dot org 2009-02-14 21:25 --- (In reply to comment #7) > What happens if you just use > > return default_binds_local_p_1 (exp, (TREE_CODE (exp) == VAR_DECL || TREE_CODE > (exp) == FUNCTION_DECL) >&& DECL_DLLIMPORT_P (exp)); > > ? > Sam

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread rguenth at gcc dot gnu dot org
--- Comment #7 from rguenth at gcc dot gnu dot org 2009-02-14 21:12 --- What happens if you just use return default_binds_local_p_1 (exp, (TREE_CODE (exp) == VAR_DECL || TREE_CODE (exp) == FUNCTION_DECL) && DECL_DLLIMPORT_P (exp)); ? -- http://gcc.gnu.org/bugzilla/show_bug.

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread ktietz at gcc dot gnu dot org
--- Comment #6 from ktietz at gcc dot gnu dot org 2009-02-14 20:10 --- (In reply to comment #2) > The problem is that targetm.binds_local_p returns true for > > type size > unit size > align 32 symtab 0 alias set -1 canonical type 0xb785edd0 precision 32

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread rguenth at gcc dot gnu dot org
--- Comment #5 from rguenth at gcc dot gnu dot org 2009-02-14 18:49 --- Jason, can we fix this in the C++ frontend? Having both TREE_STATIC and DECL_EXTERNAL set seems bogus. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added -

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread rguenth at gcc dot gnu dot org
--- Comment #4 from rguenth at gcc dot gnu dot org 2009-02-14 18:48 --- Btw, this looks like similar to PR36207 which was fixed in the Ada frontend. Still I think that i386_pe_binds_local_p is completely bogus. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39179

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread ebotcazou at gcc dot gnu dot org
--- Comment #3 from ebotcazou at gcc dot gnu dot org 2009-02-14 17:16 --- > The problem is that targetm.binds_local_p returns true for > > type size > unit size > align 32 symtab 0 alias set -1 canonical type 0xb785edd0 precision 32 > min max > > r

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread rguenth at gcc dot gnu dot org
--- Comment #2 from rguenth at gcc dot gnu dot org 2009-02-14 17:03 --- The problem is that targetm.binds_local_p returns true for unit size align 32 symtab 0 alias set -1 canonical type 0xb785edd0 precision 32 min max > readonly used public static unsigned exter

[Bug target/39179] Wrong code in c++ for const members initialized in external file

2009-02-14 Thread rguenth at gcc dot gnu dot org
--- Comment #1 from rguenth at gcc dot gnu dot org 2009-02-14 16:55 --- Single-file testcase, reproduces with a x86_64-pc-mingw32 cross at any optimization level. get_symbol_constant_value returns zero for K::k. struct K { static const unsigned k; }; extern "C" void abort (void); i