diff options
author | Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp> | 2024-02-04 19:20:16 +0900 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2024-02-04 13:25:10 -0800 |
commit | 7c2c7dd24bd93cd9cb8a6e54a4d11850982665fd (patch) | |
tree | e1781634da2399bf8d746f8a82098ac5cefe3e21 /contrib | |
parent | 777df37a12e55ecbc135efbed2749a8a8a756d4d (diff) | |
download | gcc-7c2c7dd24bd93cd9cb8a6e54a4d11850982665fd.zip gcc-7c2c7dd24bd93cd9cb8a6e54a4d11850982665fd.tar.gz gcc-7c2c7dd24bd93cd9cb8a6e54a4d11850982665fd.tar.bz2 |
xtensa: Recover constant synthesis for HImode after LRA transition
After LRA transition, HImode constants that don't fit into signed 12 bits
are no longer subject to constant synthesis:
/* example */
void test(void) {
short foo = 32767;
__asm__ ("" :: "r"(foo));
}
;; before
.literal_position
.literal .LC0, 32767
test:
l32r a9, .LC0
ret.n
This patch fixes that:
;; after
test:
movi.n a9, -1
extui a9, a9, 17, 15
ret.n
gcc/ChangeLog:
* config/xtensa/xtensa.md (SHI): New mode iterator.
(2 split patterns related to constsynth):
Change to also accept HImode operands.
Diffstat (limited to 'contrib')
0 files changed, 0 insertions, 0 deletions