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

roland at gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rearnsha at gcc dot gnu.org

--- Comment #2 from roland at gnu dot org ---
I'm still seeing this in current 11 branch.  I had been using a workaround
kludge that sufficed on the 10 branch but no longer does the trick in 11.  What
I did to work around it is dropped `-mgeneral-regs-only` and instead used a
`-include` file to inject:
```
#pragma GCC push_options                                                        
#pragma GCC target ("general-regs-only")
```
at the top of each translation unit.  Then, I use:
```
#pragma GCC pop_options
#include <arm_acle.h>
#pragma GCC push_options                                                        
#pragma GCC target ("general-regs-only")
```

This worked OK in 10.  However, now in 11 I see a few functions that still use
vector registers.  One example I noted was the implicitly-defined function for
running some static constructors, which might be outside any "parsing state"
where the `#pragma GCC target` state would apply.  The other example I found
was in a lambda function, which ISTM should have been affected by the pragma.

Rather than debug the workaround, I'd prefer to get the real bug fixed.  Is
there any hope of this?  Given that C handles it OK, it seems like it shouldn't
be too hard to make C++ use matching logic, but that may be wishful thinking.

Reply via email to