re PR rtl-optimization/32219 (optimizer causes wrong code in pic/hidden/weak symbol...
commit6a1e352e1efbdf33a3df892dadd725f0b09c70c9
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 13 Feb 2015 04:52:45 +0000 (13 04:52 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 13 Feb 2015 04:52:45 +0000 (12 20:52 -0800)
tree0b7c95151ce5d3baedf0ed3fc3544b11a92ae3a7
parentfa47895fe650bc724adbdb3d5fd24348fd315277
re PR rtl-optimization/32219 (optimizer causes wrong code in pic/hidden/weak symbol checking.)

PR rtl/32219

gcc/
* cgraphunit.c (cgraph_node::finalize_function): Set definition
before notice_global_symbol.
(varpool_node::finalize_decl): Likewise.
* varasm.c (default_binds_local_p_2): Rename from
default_binds_local_p_1, add weak_dominate argument.  Use direct
returns instead of assigning to local variable.  Unify varpool and
cgraph paths via symtab_node.  Reject undef weak variables before
testing visibility.  Reorder tests for simplicity.
(default_binds_local_p): Use default_binds_local_p_2.
(default_binds_local_p_1): Likewise.
(decl_binds_to_current_def_p): Unify varpool and cgraph paths
via symtab_node.
(default_elf_asm_output_external): Emit visibility when specified.
gcc/testsuite/
* gcc.dg/visibility-22.c: New test.
* gcc.dg/visibility-23.c: New test.
* gcc.target/i386/pr32219-1.c: New test.
* gcc.target/i386/pr32219-2.c: New test.
* gcc.target/i386/pr32219-3.c: New test.
* gcc.target/i386/pr32219-4.c: New test.
* gcc.target/i386/pr32219-5.c: New test.
* gcc.target/i386/pr32219-6.c: New test.
* gcc.target/i386/pr32219-7.c: New test.
* gcc.target/i386/pr32219-8.c: New test.
* gcc.target/i386/pr64317.c: Expect GOTOFF, not GOT.

Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r220674
15 files changed:
gcc/ChangeLog
gcc/cgraphunit.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/visibility-22.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/visibility-23.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr32219-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr64317.c
gcc/varasm.c