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: ipa-visibility TLC 2/n


On Thu, May 29, 2014 at 3:17 PM, Yufeng Zhang <Yufeng.Zhang@arm.com> wrote:
> Hi Honza,
>
> I can confirm that with your commit r211045 the arm-none-linux-gnueabi{hf}
> builds are OK now.  Thanks for the fix.

Testsuite regressions like


FAIL: g++.dg/ipa/devirt-21.C -std=gnu++1y (test for excess errors)
Excess errors:
src/gcc/gcc/testsuite/g++.dg/ipa/devirt-21.C:39:1: internal compiler
error: in gimple_get_virt_method_for_vtable, at gimple-fold.c:3273
0x9ed491 record_target_from_binfo
src/gcc/gcc/ipa-devirt.c:868
0x9ed574 record_target_from_binfo
gcc/gcc/ipa-devirt.c:885
0x9edb09 possible_polymorphic_call_targets_1
gcc/gcc/ipa-devirt.c:932
0x9eff59 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**, int*)
gcc/gcc/ipa-devirt.c:1744
0xa19724 possible_polymorphic_call_targets
src/gcc/gcc/ipa-utils.h:121
0xa19724 walk_polymorphic_call_targets
src/gcc/gcc/ipa.c:151
0xa19724 symtab_remove_unreachable_nodes(bool, _IO_FILE*)
src/gcc/gcc/ipa.c:384
0xadc4d3 execute_todo
src/gcc/gcc/passes.c:1843

Number of unexpected g++ failures now up to 127 on arm-linux-gnueabi(hf).

regards
Ramana


>
> Yufeng
>
>
> On 05/28/14 22:56, Jan Hubicka wrote:
>>>
>>> Any update?
>>>
>>> I've managed to generate a simple test case from
>>> libstdc++-v3/src/c++98/strstream.cc which reproduces the issue on
>>> ARM that Ramana has reported previously:
>>>
>>>
>>> template<class _CharT>   struct char_traits;
>>>
>>> template<typename _CharT, typename _Traits>
>>> class basic_ios
>>> {
>>> };
>>>
>>> template<typename _CharT, typename _Traits = char_traits<_CharT>  >
>>> class basic_istream : virtual public basic_ios<_CharT, _Traits>
>>> {
>>> protected:
>>>    int _M_gcount;
>>>    virtual ~basic_istream()
>>>      { }
>>> };
>>>
>>> class istrstream : public basic_istream<char>
>>> {
>>>    virtual ~istrstream();
>>> };
>>>
>>> istrstream::~istrstream()
>>> {
>>> }
>>>
>>> ------------------ CUT ------------------
>>>
>>> With an arm-none-linux-gnueabi gcc configured as:
>>>
>>> ./gcc/configure --target=arm-none-linux-gnueabi
>>> --enable-gnu-indirect-function --enable-shared --with-arch=armv7-a
>>> --with-fpu=vfpv3-d16 --with-float=softfp --with-arch=armv7-a
>>> (irrelevant parts omitted)
>>>
>>> With the following command line options:
>>>
>>>   -fdata-sections    -O2  -fPIC  -S ./test.cpp
>>>
>>> We'll see
>>>
>>> ./test.cpp:17:7: error: istrstream::_ZTV10istrstream.localalias.0
>>> causes a section type conflict with istrstream::_ZTV10istrstream
>>>   class istrstream : public basic_istream<char>
>>>         ^
>>> ./test.cpp:17:7: note: 'istrstream::_ZTV10istrstream' was declared here
>>
>>
>> This seems to be same cause as on AIX - we do section for decl rather than
>> original.  The following patch seems to fix it.  Does it allows bootstrap
>> for you? (it doesn't for AIX. but that seems bug in output machinery)
>>
>> Index: varasm.c
>> ===================================================================
>> --- varasm.c    (revision 210914)
>> +++ varasm.c    (working copy)
>> @@ -1083,6 +1083,9 @@
>>   {
>>     addr_space_t as = ADDR_SPACE_GENERIC;
>>     int reloc;
>> +  symtab_node *snode = symtab_get_node (decl);
>> +  if (snode)
>> +    decl = symtab_alias_ultimate_target (snode)->decl;
>>
>>     if (TREE_TYPE (decl) != error_mark_node)
>>       as = TYPE_ADDR_SPACE (TREE_TYPE (decl));
>>>
>>>
>>>
>>> Yufeng
>>
>>
>
>


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