public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/40914]  New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta
@ 2009-07-30 13:28 rearnsha at gcc dot gnu dot org
  2009-07-31  9:38 ` [Bug tree-optimization/40914] " rguenth at gcc dot gnu dot org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2009-07-30 13:28 UTC (permalink / raw)
  To: gcc-bugs

The code in ipa_analyze_call_uses tries to wade through the gimple to identify
uses of pointers to member functions that are invariant after inlining (due to
parameter passing).  However, the code only looks for the vbit test on the
pointer part of the pmf not on the delta.  On targets such as ARM all bits in
the pointer are meaningful and the vbit is stored in the delta and the code
scrubbing fails to match.

Testcase is g++.dg/ipa/iinline-1.C 

On arm the relevant gimple looks like:

  f$__pfn_4 = f.__pfn;
  f$__delta_24 = f.__delta;
  __comp_ctor  (&S, &"muhehehe"[0]);
  D.1787_3 = f$__delta_24 & 1;
  if (D.1787_3 != 0)
    goto <bb 3>;
  else
    goto <bb 4>;

<bb 3>:
  D.1789_6 = f$__delta_24 >> 1;
  D.1790_7 = (unsigned int) D.1789_6;
  D.1791_8 = &S + D.1790_7;
  D.1792_9 = (int (*__vtbl_ptr_type) (void) * *) D.1791_8;
  D.1793_10 = *D.1792_9;
  D.1795_12 = (unsigned int) f$__pfn_4;
  D.1796_13 = D.1793_10 + D.1795_12;
  D.1797_14 = *D.1796_13;
  iftmp.0_15 = (String:: *) D.1797_14;
<bb 4>:
  # iftmp.0_1 = PHI <iftmp.0_15(3), f$__pfn_4(2)>
  D.1789_18 = f$__delta_24 >> 1;
  D.1790_19 = (unsigned int) D.1789_18;
  D.1798_20 = &S + D.1790_19;
  D.1784_21 = iftmp.0_1 (D.1798_20, 4);


-- 
           Summary: ipa_analyze_call_uses fails to handle
                    ptrmemfunc_vbit_in_delta
           Product: gcc
           Version: 4.4.2
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rearnsha at gcc dot gnu dot org
GCC target triplet: arm-eabi


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40914


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/40914] ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta
  2009-07-30 13:28 [Bug tree-optimization/40914] New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta rearnsha at gcc dot gnu dot org
@ 2009-07-31  9:38 ` rguenth at gcc dot gnu dot org
  2009-07-31 10:52 ` rearnsha at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-07-31  9:38 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2009-07-31 09:38 -------
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-07-31 09:38:39
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40914


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/40914] ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta
  2009-07-30 13:28 [Bug tree-optimization/40914] New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta rearnsha at gcc dot gnu dot org
  2009-07-31  9:38 ` [Bug tree-optimization/40914] " rguenth at gcc dot gnu dot org
@ 2009-07-31 10:52 ` rearnsha at gcc dot gnu dot org
  2009-07-31 21:56 ` rearnsha at gcc dot gnu dot org
  2009-07-31 21:57 ` rearnsha at gcc dot gnu dot org
  3 siblings, 0 replies; 5+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2009-07-31 10:52 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rearnsha at gcc dot gnu dot org  2009-07-31 10:52 -------
Patch proposed here:
http://gcc.gnu.org/ml/gcc-patches/2009-07/msg01816.html


-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|enhancement                 |normal


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40914


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/40914] ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta
  2009-07-30 13:28 [Bug tree-optimization/40914] New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta rearnsha at gcc dot gnu dot org
  2009-07-31  9:38 ` [Bug tree-optimization/40914] " rguenth at gcc dot gnu dot org
  2009-07-31 10:52 ` rearnsha at gcc dot gnu dot org
@ 2009-07-31 21:56 ` rearnsha at gcc dot gnu dot org
  2009-07-31 21:57 ` rearnsha at gcc dot gnu dot org
  3 siblings, 0 replies; 5+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2009-07-31 21:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rearnsha at gcc dot gnu dot org  2009-07-31 21:56 -------
Subject: Bug 40914

Author: rearnsha
Date: Fri Jul 31 21:56:28 2009
New Revision: 150319

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=150319
Log:
        PR tree-optimization/40914
        * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
        if set, then check the delta field of the PMF record.
        (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
        (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
        call is stored in the delta.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ipa-prop.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40914


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug tree-optimization/40914] ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta
  2009-07-30 13:28 [Bug tree-optimization/40914] New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta rearnsha at gcc dot gnu dot org
                   ` (2 preceding siblings ...)
  2009-07-31 21:56 ` rearnsha at gcc dot gnu dot org
@ 2009-07-31 21:57 ` rearnsha at gcc dot gnu dot org
  3 siblings, 0 replies; 5+ messages in thread
From: rearnsha at gcc dot gnu dot org @ 2009-07-31 21:57 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from rearnsha at gcc dot gnu dot org  2009-07-31 21:57 -------
Fixed on trunk


-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40914


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-07-31 21:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-30 13:28 [Bug tree-optimization/40914] New: ipa_analyze_call_uses fails to handle ptrmemfunc_vbit_in_delta rearnsha at gcc dot gnu dot org
2009-07-31  9:38 ` [Bug tree-optimization/40914] " rguenth at gcc dot gnu dot org
2009-07-31 10:52 ` rearnsha at gcc dot gnu dot org
2009-07-31 21:56 ` rearnsha at gcc dot gnu dot org
2009-07-31 21:57 ` rearnsha at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).