https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106680
--- Comment #6 from Sebastian Huber <sebastian.hu...@embedded-brains.de> ---
It seems that the change
commit acc727cf02a1446dc00f8772f3f479fa3a508f8e
Author: Kewen Lin <li...@linux.ibm.com>
Date: Tue Dec 27 04:13:07 2022 -0600
rs6000: Rework option -mpowerpc64 handling [PR106680]
causes a regression for -mcpu=e6500 -m32, for example:
gcc -fpreprocessed -O2 -S -mcpu=e6500 -m32 -S imfs_add_node.c.67.s
imfs_add_node.c.67.i
diff -u imfs_add_node.c.67.s.good.e2acff49fb2962b921bf8b73984b89878b61492c
imfs_add_node.c.67.s.bad.acc727cf02a1446dc00f8772f3f479fa3a508f8e
--- imfs_add_node.c.67.s.good.e2acff49fb2962b921bf8b73984b89878b61492c
2024-01-20 12:15:15.143182571 +0100
+++ imfs_add_node.c.67.s.bad.acc727cf02a1446dc00f8772f3f479fa3a508f8e
2024-01-20 12:11:46.804204927 +0100
@@ -52,8 +52,8 @@
bne- 0,.L4
.L2:
mr 4,29
- addi 3,1,8
li 5,24
+ addi 3,1,8
bl rtems_filesystem_eval_path_start
lis 9,IMFS_node_clone@ha
lwz 10,20(3)
@@ -63,12 +63,12 @@
cmpw 0,10,9
beq- 0,.L24
li 4,134
- addi 3,1,8
+ li 3,0
bl rtems_filesystem_eval_path_error
.L9:
li 31,-1
.L10:
- addi 3,1,8
+ li 3,0
bl rtems_filesystem_eval_path_cleanup
.L1:
lwz 0,116(1)
@@ -93,7 +93,7 @@
lwz 9,12(31)
li 8,96
lhz 10,16(31)
- addi 3,1,8
+ li 3,0
stw 8,24(1)
stw 9,8(1)
stw 10,12(1)
@@ -105,7 +105,7 @@
cmpwi 0,9,0
beq- 0,.L9
li 4,22
- addi 3,1,8
+ li 3,0
bl rtems_filesystem_eval_path_error
b .L9
.p2align 4,,15
@@ -129,12 +129,9 @@
stw 9,0(10)
stw 10,4(9)
bl _Timecounter_Getbintime
- lwz 10,64(1)
- lwz 11,68(1)
- stw 10,40(30)
- stw 11,44(30)
- stw 10,48(30)
- stw 11,52(30)
+ ld 9,64(1)
+ std 9,40(30)
+ std 9,48(30)
b .L10
.cfi_endproc
.LFE351:
For the call to rtems_filesystem_eval_path_cleanup() the register 3 should
point to a structure on the stack. Correct is:
- addi 3,1,8
Wrong is:
+ li 3,0
It seems that for the -mcpu=e6500 the -m32 option has not the right effect and
some 64-bit instructions are generated, for example ld and std plus the wrong
function parameters.