[Bug optimization/14736] New: [tree-ssa] code quality regression

dann at godzilla dot ics dot uci dot edu gcc-bugzilla@gcc.gnu.org
Thu Mar 25 23:20:00 GMT 2004


There seems to be a code quality regression in tree-ssa between 
2004/03/08 and 2004/03/20 

The .vars dump for generate-3.4.ii from PR8361 generated by 
gcc version 3.5-tree-ssa 20040308 (merged 20040305)
has 100840 lines
the one generated by
gcc version 3.5-tree-ssa 20040320 (merged 20040307)
has 85811 lines.

Granted the number of lines in .vars is not the best measure of code
quality, but given the 15% size difference something seems wrong. 

Looking at the diff between the 2 I saw the following type of
difference in a few places:

 <L5>:;
-  if (__result == __first) goto <L6>; else goto <L7>;
+  se = (struct ELEMENT &)__first;
+  if (__result == (struct ELEMENT * const)se) goto <L6>; else goto <L7>; 


Given that this code is from std::vector::iterator it appears in quite a
few places. Look for example at:
typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp,
_Alloc>::erase(__gnu_cxx::__normal_iterator<_Tp*, std::vector<_Tp, _Alloc> >,
__gnu_cxx::__normal_iterator<_Tp*, std::vector<_Tp, _Alloc> >) [with _Tp =
STACK<int>::ELEMENT, _Alloc = std::allocator<STACK<int>::ELEMENT>] (this,
__first, __last)



Another oddity is code like:

<L38>:;
  __first = __first;
  __result = __result;

-- 
           Summary: [tree-ssa] code quality regression
           Product: gcc
           Version: tree-ssa
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dann at godzilla dot ics dot uci dot edu
                CC: gcc-bugs at gcc dot gnu dot org


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



More information about the Gcc-bugs mailing list