https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91892

            Bug ID: 91892
           Summary: [5.x,6.x ARM] Having a global pair<double, double>
                    causes code gen bug for init list of pair<double,
                    double>
           Product: gcc
           Version: 6.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dascandy at gmail dot com
  Target Milestone: ---

https://godbolt.org/z/Q3BQRS

Code that sees the global first generates 16-byte aligned register allocation
for loading an initializer_list. Code that does not see the global first
generates 8-byte aligned register allocation for the same initializer_list. Net
result is that the pair is stored in r1/r2 (left tab) and loaded from r2/r3
(right tab).

Confirmed working normally on 7.x+. Generates an ABI warning on 6.x, but also
generates broken code. The warning might be this problem, but in that case I'd
expect the other half to compile at least in the same way.

Reply via email to