This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/22157] New: [4.0/4.1 Regression] struct copying code gen


Take the following code:
struct s
{
  short t;
  short y1;
};

void f(struct s *x, struct s *y)
{
  struct s t = *x;
  *y = t;
}

In 3.4.0, we produced:
_f:
        lwz r0,0(r3)
        stw r0,0(r4)
        blr
but in 4.0.0 and above:
_f:
        lhz r2,2(r3)
        lha r0,0(r3)
        sth r2,2(r4)
        sth r0,0(r4)
        blr

I am starting to think we should use VIEW_CONVERT_EXPR in SRA and store it into a type which is the 
same as the mode if the mode is not BKL_MODE (RTL mode by the way) and we don't access the 
temporary variable's fields.  That would fix PR 22156 also.  Maybe I can look into doing this.

-- 
           Summary: [4.0/4.1 Regression] struct copying code gen
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org,rth at gcc dot gnu dot
                    org
OtherBugsDependingO 22156
             nThis:


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


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