On Wed, Nov 19, 2014 at 5:39 PM, Andrew Pinski <pins...@gmail.com> wrote:
> On Wed, Nov 19, 2014 at 5:37 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> On Wed, Nov 19, 2014 at 5:36 PM, Andrew Pinski <pins...@gmail.com> wrote:
>>> On Wed, Nov 19, 2014 at 5:35 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>> On Wed, Nov 19, 2014 at 5:23 PM, Andrew Pinski <pins...@gmail.com> wrote:
>>>>> On Wed, Nov 19, 2014 at 5:11 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>>>>> On Wed, Nov 19, 2014 at 4:54 PM, Andrew Pinski <pins...@gmail.com> wrote:
>>>>>>> Hi,
>>>>>>>   For ILP32 on AARCH64, we have ptr_mode != Pmode (we have ptr_mode
>>>>>>> being SImode while Pmode is DImode and POINTER_SIZE is 32).  This
>>>>>>> breaks ipa-polymorphic-call assumption that Pmode is the correct mode
>>>>>>> for pointers.  Right now before this patch we get many testcase
>>>>>>> failures in the C++ testsuite due to this.  Some of the tests fail due
>>>>>>> to the wrong devirtualization happening (using the base class rather
>>>>>>> the current class).
>>>>>>>
>>>>>>> This patch fixes the issue by using POINTER_SIZE in place of
>>>>>>> GET_MODE_BITSIZE (Pmode) all over the file.
>>>>>>>
>>>>>>> OK?  Bootstrapped and tested on x86_64 and cross built and tested for
>>>>>>> aarch64-elf with no regressions.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Andrew Pinski
>>>>>>>
>>>>>>> ChangeLog:
>>>>>>> ipa/63981
>>>>>>> * ipa-polymorphic-call.c (possible_placement_new):
>>>>>>> Use POINTER_SIZE instead of GET_MODE_BITSIZE (Pmode).
>>>>>>> (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
>>>>>>> (extr_type_from_vtbl_ptr_store): Likewise.
>>>>>>
>>>>>> Does Pmode affect class layout?
>>>>>
>>>>> No only POINTER_SIZE.  ILP32 is one of the few ABIs where Pmode !=
>>>>> ptr_mode (sizeof(ptr_mode) == POINTER_SIZE always).
>>>>>
>>>>> x32 has a similar issue with -maddress-mode=long but the default for
>>>>> x32 is -maddress-mode=short.
>>>>
>>>> Pmode shouldn't change class layout, which is determined by ptr_mode.
>>>> You can mix  object files compiled by -maddress-mode=long with
>>>> -maddress-mode=short.  Do those tests fail with -maddress-mode=long
>>>> under x32?
>>>
>>>
>>> I suspect they do fail with -maddress-mode=long but I did not try as I
>>> don't have x32 testing setup right now.
>>>
>>
>> Which one may fail with -maddress-mode=long?
>
> The full list of the failures can be found in
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63982 and
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63981 and below:
>
> FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++98  scan-ipa-dump-times cp
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++11  scan-ipa-dump-times cp
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++14  scan-ipa-dump-times cp
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++98  scan-ipa-dump devirt
> "Speculative targets"
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++98  scan-ipa-dump devirt "1
> speculatively devirtualized"
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++11  scan-ipa-dump devirt
> "Speculative targets"
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++11  scan-ipa-dump devirt "1
> speculatively devirtualized"
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++14  scan-ipa-dump devirt
> "Speculative targets"
> FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++14  scan-ipa-dump devirt "1
> speculatively devirtualized"
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14 (internal compiler error)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14 (test for excess errors)
> FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14  scan-tree-dump fre1
> "converting indirect call to function virtual int B::t"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2 "No
> dynamic type change found."
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
> "Checking vtbl store:"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
> "Function call may change dynamic type:extcall"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
> "converting indirect call to function virtual void"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2 "No
> dynamic type change found."
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
> "Checking vtbl store:"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
> "Function call may change dynamic type:extcall"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
> "converting indirect call to function virtual void"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2 "No
> dynamic type change found."
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
> "Checking vtbl store:"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
> "Function call may change dynamic type:extcall"
> FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
> "converting indirect call to function virtual void"
> FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++98  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++11  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++14  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-ipa-dump-times inline
> "First type is base of second" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-tree-dump-times
> optimized "return 2" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-tree-dump-not
> optimized "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-ipa-dump-times inline
> "First type is base of second" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-tree-dump-times
> optimized "return 2" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-tree-dump-not
> optimized "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-ipa-dump-times inline
> "First type is base of second" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target" 2
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-tree-dump-times
> optimized "return 2" 3
> FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-tree-dump-not
> optimized "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++98  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++98  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++11  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++11  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++14  scan-ipa-dump inline
> "Second type is base of first"
> FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++14  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++98  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++11  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++14  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++98  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++11  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++14  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*B::foo" 1
> FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++98  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
> FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++11  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
> FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++14  scan-ipa-dump-times inline
> "Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
> FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++98  scan-ipa-dump-not
> whole-program "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++11  scan-ipa-dump-not
> whole-program "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++14  scan-ipa-dump-not
> whole-program "OBJ_TYPE_REF"
> FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++98  scan-tree-dump-times
> optimized "OBJ_TYPE_REF" 0
> FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++11  scan-tree-dump-times
> optimized "OBJ_TYPE_REF" 0
> FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++14  scan-tree-dump-times
> optimized "OBJ_TYPE_REF" 0
> FAIL: g++.dg/ipa/pr60600.C  -std=gnu++98  scan-ipa-dump cp "Type
> inconsistent devirtualization"
> FAIL: g++.dg/ipa/pr60600.C  -std=gnu++11  scan-ipa-dump cp "Type
> inconsistent devirtualization"
> FAIL: g++.dg/ipa/pr60600.C  -std=gnu++14  scan-ipa-dump cp "Type
> inconsistent devirtualization"
> FAIL: g++.dg/opt/pr36185.C  -std=gnu++98 execution test
> FAIL: g++.dg/opt/pr36185.C  -std=gnu++11 execution test
> FAIL: g++.dg/opt/pr36185.C  -std=gnu++14 execution test
> FAIL: g++.dg/tree-ssa/20040317-1.C  -std=gnu++98 execution test
> FAIL: g++.dg/tree-ssa/20040317-1.C  -std=gnu++11 execution test
> FAIL: g++.dg/tree-ssa/20040317-1.C  -std=gnu++14 execution test
> FAIL: g++.dg/torture/covariant-1.C   -O2  execution test
> FAIL: g++.dg/torture/covariant-1.C   -O3 -fomit-frame-pointer  execution test
> FAIL: g++.dg/torture/covariant-1.C   -O3 -g  execution test
> FAIL: g++.dg/torture/covariant-1.C   -Os  execution test
> FAIL: g++.dg/torture/covariant-1.C   -O2 -flto -fno-use-linker-plugin
> -flto-partition=none  execution test
> FAIL: g++.dg/torture/covariant-1.C   -O2 -flto -fuse-linker-plugin
> -fno-fat-lto-objects  execution test
>
>
> Thanks,
> Andrew
>

I saw

make check-c++ RUNTESTFLAGS="--target_board='unix{-mx32\
-maddress-mode=long}' dg.exp=devirt-*.C"
...
Running target unix/-mx32 -maddress-mode=long
Using /usr/share/dejagnu/baseboards/unix.exp as board description file
for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /export/gnu/import/git/gcc/gcc/testsuite/config/default.exp as
tool-and-target-specific interface file.
Running /export/gnu/import/git/gcc/gcc/testsuite/g++.dg/dg.exp ...
FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++98  scan-ipa-dump-times cp
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++11  scan-ipa-dump-times cp
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-10.C  -std=gnu++14  scan-ipa-dump-times cp
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-29.C  -std=gnu++11 execution test
FAIL: g++.dg/ipa/devirt-29.C  -std=gnu++14 execution test
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++98  scan-ipa-dump devirt
"Speculative targets"
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++98  scan-ipa-dump devirt "1
speculatively devirtualized"
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++11  scan-ipa-dump devirt
"Speculative targets"
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++11  scan-ipa-dump devirt "1
speculatively devirtualized"
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++14  scan-ipa-dump devirt
"Speculative targets"
FAIL: g++.dg/ipa/devirt-34.C  -std=gnu++14  scan-ipa-dump devirt "1
speculatively devirtualized"
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98 (internal compiler error)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98 (test for excess errors)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++98  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11 (internal compiler error)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11 (test for excess errors)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++11  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14 (internal compiler error)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14 (test for excess errors)
FAIL: g++.dg/ipa/devirt-35.C  -std=gnu++14  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98 (internal compiler error)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98 (test for excess errors)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++98  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11 (internal compiler error)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11 (test for excess errors)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++11  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14 (internal compiler error)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14 (test for excess errors)
FAIL: g++.dg/ipa/devirt-36.C  -std=gnu++14  scan-tree-dump fre1
"converting indirect call to function virtual int B::t"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2 "No
dynamic type change found."
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
"Checking vtbl store:"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
"Function call may change dynamic type:extcall"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++98  scan-tree-dump fre2
"converting indirect call to function virtual void"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2 "No
dynamic type change found."
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
"Checking vtbl store:"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
"Function call may change dynamic type:extcall"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++11  scan-tree-dump fre2
"converting indirect call to function virtual void"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2 "No
dynamic type change found."
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
"Checking vtbl store:"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
"Function call may change dynamic type:extcall"
FAIL: g++.dg/ipa/devirt-37.C  -std=gnu++14  scan-tree-dump fre2
"converting indirect call to function virtual void"
FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++98  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++11  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-41.C  -std=gnu++14  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-ipa-dump-times inline
"First type is base of second" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-ipa-dump-times inline
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-tree-dump-times
optimized "return 2" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++98  scan-tree-dump-not
optimized "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-ipa-dump-times inline
"First type is base of second" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-ipa-dump-times inline
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-tree-dump-times
optimized "return 2" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++11  scan-tree-dump-not
optimized "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-ipa-dump-times inline
"First type is base of second" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-ipa-dump-times inline
"Discovered a virtual call to a known target" 2
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-tree-dump-times
optimized "return 2" 3
FAIL: g++.dg/ipa/devirt-42.C  -std=gnu++14  scan-tree-dump-not
optimized "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++98  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++98  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++11  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++11  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++14  scan-ipa-dump inline
"Second type is base of first"
FAIL: g++.dg/ipa/devirt-44.C  -std=gnu++14  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++98  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++11  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-45.C  -std=gnu++14  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++98  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++11  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-46.C  -std=gnu++14  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*B::foo" 1
FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++98  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++11  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
FAIL: g++.dg/ipa/devirt-47.C  -std=gnu++14  scan-ipa-dump-times inline
"Discovered a virtual call to a known target[^\\n]*C::_ZTh" 1
FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++98  scan-ipa-dump-not
whole-program "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++11  scan-ipa-dump-not
whole-program "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-9.C  -std=gnu++14  scan-ipa-dump-not
whole-program "OBJ_TYPE_REF"
FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++98  scan-tree-dump-times
optimized "OBJ_TYPE_REF" 0
FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++11  scan-tree-dump-times
optimized "OBJ_TYPE_REF" 0
FAIL: g++.dg/ipa/devirt-g-1.C  -std=gnu++14  scan-tree-dump-times
optimized "OBJ_TYPE_REF" 0

=== g++ Summary ===

# of expected passes 394
# of unexpected failures 77
# of expected failures 9
# of unresolved testcases 12
# of unsupported tests 2


-- 
H.J.

Reply via email to