[Bug tree-optimization/78180] Poor optimization of std::array on gcc 4.8/5.4/6.2 as compared to simple raw array
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 3 01:58:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78180
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |tree-optimization
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
r.idx_ is not optimized away inside the loop for some reason.
NonWorking case:
_53 = r.idx_;
_54 = (long unsigned int) _53;
MEM[(value_type &)&r][_54] = _2;
Working case:
_52 = r.idx_;
r.times_[_52] = _2;
std::array operator[]:
_5 = &MEM[(const long int[128] &)this_2(D)][__n_4(D)];
----------
reference
operator[](size_type __n) noexcept
{ return _AT_Type::_S_ref(_M_elems, __n); }
static constexpr _Tp&
_S_ref(const _Type& __t, std::size_t __n) noexcept
{ return const_cast<_Tp&>(__t[__n]); }
So SRA is not understanding the array being the first field .....
More information about the Gcc-bugs
mailing list