[Bug c++/115291] New: armv8-a GCC emits float32x2_t loads from uninitialized stack
akihiko.odaki at daynix dot com
gcc-bugzilla@gcc.gnu.org
Thu May 30 10:02:32 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115291
Bug ID: 115291
Summary: armv8-a GCC emits float32x2_t loads from uninitialized
stack
Product: gcc
Version: 14.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: akihiko.odaki at daynix dot com
Target Milestone: ---
Run the following commands:
git clone https://gitlab.com/libeigen/eigen.git -b
38b9cc263bbaeb03ce408a4e26084543a6c0dedb
cat main.cpp <<'EOF'
#include "Eigen/Core"
auto f() -> Eigen::Matrix2f {
return Eigen::Matrix2f::Zero();
}
auto g() -> Eigen::Vector2f {
auto v = Eigen::Product(f(), Eigen::Vector2f::Zero());
return v;
}
EOF
c++ -Ieigen -O1 -DNDEBUG main.cpp -S
Now main.s looks like:
.arch armv8-a
.file "main.cpp"
.text
.align 2
.global _Z1fv
.type _Z1fv, %function
_Z1fv:
.LFB13241:
.cfi_startproc
mov x0, x8
str wzr, [x8]
str wzr, [x8, 4]
str wzr, [x8, 8]
str wzr, [x8, 12]
ret
.cfi_endproc
.LFE13241:
.size _Z1fv, .-_Z1fv
.align 2
.global _Z1gv
.type _Z1gv, %function
_Z1gv:
.LFB13246:
.cfi_startproc
sub sp, sp, #16
.cfi_def_cfa_offset 16
mov x0, x8
movi v30.2s, 0
ldr d31, [sp]
fmul v31.2s, v31.2s, v30.2s
ldr d29, [sp, 8]
fmla v31.2s, v29.2s, v30.2s
str d31, [x8]
add sp, sp, 16
.cfi_def_cfa_offset 0
ret
.cfi_endproc
.LFE13246:
.size _Z1gv, .-_Z1gv
.align 2
.type _GLOBAL__sub_I__Z1fv, %function
_GLOBAL__sub_I__Z1fv:
.LFB14439:
.cfi_startproc
ret
.cfi_endproc
.LFE14439:
.size _GLOBAL__sub_I__Z1fv, .-_GLOBAL__sub_I__Z1fv
.ident "GCC: (GNU) 14.1.1 20240507 (Red Hat 14.1.1-1)"
.section .note.GNU-stack,"",@progbits
In _Z1gv, "ldr d31, [sp]" loads values from nowhere.
More information about the Gcc-bugs
mailing list