https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
Andrew Pinski changed:
What|Removed |Added
Known to work||9.1.0
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
Andrew Pinski changed:
What|Removed |Added
Status|ASSIGNED|NEW
Assignee|pinskia at gcc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #9 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #7)
> I have not done a bootstrap/test yet but I can do it on a machine which has
> LSE support in a few minutes.
Note this patch causes many failures but none in gcc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #8 from dhowells at redhat dot com ---
(In reply to Andrew Pinski from comment #7)
> Created attachment 38509 [details]
> Full fix which needs full testing
This is looking good:
0058 :
58: 12001403and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #7 from Andrew Pinski ---
Created attachment 38509
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38509=edit
Full fix which needs full testing
I think I have a full fix.
Basically there is no reason why we can't expand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #6 from ktkachov at gcc dot gnu.org ---
(In reply to ktkachov from comment #5)
> In the foo_clear_bit_unlock case combine tries to match:
> (parallel [
> (set (mem/v:DI (reg:DI 88) [-1 S8 A64])
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #5 from ktkachov at gcc dot gnu.org ---
In the foo_clear_bit_unlock case combine tries to match:
(parallel [
(set (mem/v:DI (reg:DI 88) [-1 S8 A64])
(unspec_volatile:DI [
(and:DI (not:DI
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #4 from dhowells at redhat dot com ---
That looks better here:
007c :
7c: d2a00801mov x1, #0x40 // #4194304
80: f8611001ldclrl x1, x1, [x0]
84: d65f03c0ret
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #3 from Andrew Pinski ---
The other way of fixing this is to expose the NOT in RTL before register
allocator. That is harder but still doable.