This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH/IPA] Fix ipa-polymorphic-call when size of Pmode is not the size of pointers in user code
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Andrew Pinski <pinskia at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 19 Nov 2014 17:11:16 -0800
- Subject: Re: [PATCH/IPA] Fix ipa-polymorphic-call when size of Pmode is not the size of pointers in user code
- Authentication-results: sourceware.org; auth=none
- References: <CA+=Sn1=zo+6_8o-Rg6LEFAod1M-91hpPLfGvhuTvv-f00RJHBA at mail dot gmail dot com>
On Wed, Nov 19, 2014 at 4:54 PM, Andrew Pinski <pinskia@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?
--
H.J.