[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 Richard Biener changed: What|Removed |Added Target Milestone|11.3|11.4 --- Comment #9 from Richard Biener --- GCC 11.3 is being released, retargeting bugs to GCC 11.4.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #8 from H.J. Lu --- (In reply to Richard Biener from comment #7) > Yes, it would be nice to transition away from relying on TYPE_MODE for > argument passing. Does the psABI say anything about this case or is it in > the area of implementation defined behavior? Arguments of types _Float16, float, double, _Decimal32, _Decimal64 and __m64 are in class SSE. V2SF is covered by __m64.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 Richard Biener changed: What|Removed |Added Priority|P3 |P2 Version|unknown |11.2.1 Target||x86_64-*-* CC||rguenth at gcc dot gnu.org --- Comment #7 from Richard Biener --- Yes, it would be nice to transition away from relying on TYPE_MODE for argument passing. Does the psABI say anything about this case or is it in the area of implementation defined behavior?
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #6 from Andrew Pinski --- (In reply to H.J. Lu from comment #5) > (In reply to Andrew Pinski from comment #3) > > There are calls to vector_mode_supported_p in stor-layout which changes the > > It sounds odd to me since vector_mode_supported_p can change overtime. > > > TYPE_MODE of the RECORD_TYPE depending on if vector_mode_supported_p returns > > true or not and classify_argument depends on TYPE_MODE in some cases > > I am not sure if we can fix it in backend alone. Most back-ends moved away from looking at TYPE_MODE for argument passing long time ago. I can understand why you might want to stay with that I don't think anyone should depend on TYPE_MODE for argument passing any more.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #5 from H.J. Lu --- (In reply to Andrew Pinski from comment #3) > There are calls to vector_mode_supported_p in stor-layout which changes the It sounds odd to me since vector_mode_supported_p can change overtime. > TYPE_MODE of the RECORD_TYPE depending on if vector_mode_supported_p returns > true or not and classify_argument depends on TYPE_MODE in some cases I am not sure if we can fix it in backend alone.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #4 from H.J. Lu --- (In reply to Andrew Pinski from comment #3) > There are calls to vector_mode_supported_p in stor-layout which changes the > TYPE_MODE of the RECORD_TYPE depending on if vector_mode_supported_p returns > true or not and classify_argument depends on TYPE_MODE in some cases We need to issue a ABI change warning.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 Andrew Pinski changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2021-08-23 Ever confirmed|0 |1 --- Comment #3 from Andrew Pinski --- There are calls to vector_mode_supported_p in stor-layout which changes the TYPE_MODE of the RECORD_TYPE depending on if vector_mode_supported_p returns true or not and classify_argument depends on TYPE_MODE in some cases
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #2 from Uroš Bizjak --- gcc-11 does: : 0: 55 push %rbp 1: 48 89 e5mov%rsp,%rbp 4: 48 8b 05 00 00 00 00mov0x0(%rip),%rax# b 7: R_X86_64_PC32check2237_ret-0x4 b: 66 48 0f 6e c0 movq %rax,%xmm0 10: 5d pop%rbp 11: c3 retq and for reference, clang-12: : 0: 55 push %rbp 1: 48 89 e5mov%rsp,%rbp 4: 48 8b 04 25 00 00 00mov0x0,%rax b: 00 8: R_X86_64_32S check2237_ret c: 48 89 45 f8 mov%rax,-0x8(%rbp) 10: f2 0f 10 45 f8 movsd -0x8(%rbp),%xmm0 15: 5d pop%rbp 16: c3 retq These are the same.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 --- Comment #1 from Uroš Bizjak --- (In reply to Marek Polacek from comment #0) > We have an ABI break. Discovered by > Running > /root/rpmbuild/BUILD/gcc-11.2.1-20210728/gcc/testsuite/gcc.dg/compat/struct- > layout-1.exp ... > FAIL: tmpdir-gcc.dg-struct-layout-1/t025 c_compat_x_tst.o-c_compat_y_alt.o > execute > FAIL: tmpdir-gcc.dg-struct-layout-1/t025 c_compat_x_alt.o-c_compat_y_tst.o > execute > > Started with r11-263. Strange, changes in the referred revision do not touch any of the ABI-definning functions.
[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102027 Marek Polacek changed: What|Removed |Added Keywords||ABI Summary|ABI break when using vector |[11/12 Regression] ABI |type in function arg/return |break when using vector |value |type in function arg/return ||value Target Milestone|--- |11.3
