This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR rtl-optimization/32219: optimizer causees wrong code in pic/hidden/weak symbol checking


On 13/02/15 05:11, Richard Henderson wrote:
On 02/12/2015 08:14 PM, H.J. Lu wrote:
I tried the second patch.  Results look good on Linux/x86-64.

Thanks.  My results concurr.  I went ahead and installed the patch as posted.


r~


2015-02-12  H.J. Lu  <hongjiu.lu@intel.com>
             Richard Henderson  <rth@redhat.com>

         PR rtl/32219
         * 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.

2015-02-12  H.J. Lu  <hongjiu.lu@intel.com>

         PR rtl/32219
         * 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.


Hi all,
By changing behaviour of varasm.c:default_binds_local_p, this patch changes behaviour of gcc/config/arm/arm.c:arm_function_in_section_p and through it breaks gcc/config/arm/arm.c:arm_is_long_call_p for weak symbols.

As a result, I get regression for gcc.target/arm/long-calls-1.c on
arm-none-eabi:
FAIL: gcc.target/arm/long-calls-1.c scan-assembler-not \tbl?\tweak_l1\n
FAIL: gcc.target/arm/long-calls-1.c scan-assembler-not \tbl?\tweak_l3\n

In https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html there
is a description for -mlong-calls.

This has to be fixed.

Kind regards,
Alex


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]