[Bug target/102027] [11/12 Regression] ABI break when using vector type in function arg/return value

2022-04-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
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

2021-08-24 Thread hjl.tools at gmail dot com via Gcc-bugs
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

2021-08-24 Thread rguenth at gcc dot gnu.org via Gcc-bugs
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

2021-08-23 Thread pinskia at gcc dot gnu.org via Gcc-bugs
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

2021-08-23 Thread hjl.tools at gmail dot com via Gcc-bugs
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

2021-08-23 Thread hjl.tools at gmail dot com via Gcc-bugs
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

2021-08-23 Thread pinskia at gcc dot gnu.org via Gcc-bugs
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

2021-08-23 Thread ubizjak at gmail dot com via Gcc-bugs
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

2021-08-23 Thread ubizjak at gmail dot com via Gcc-bugs
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

2021-08-23 Thread mpolacek at gcc dot gnu.org via Gcc-bugs
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