[Bug target/113876] ICE: in ix86_expand_epilogue, at config/i386/i386.cc:10101 with -O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf -mcmodel=large

2024-02-13 Thread hjl.tools at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113876

H.J. Lu  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from H.J. Lu  ---
Fixed.

[Bug target/113876] ICE: in ix86_expand_epilogue, at config/i386/i386.cc:10101 with -O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf -mcmodel=large

2024-02-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113876

--- Comment #3 from GCC Commits  ---
The master branch has been updated by H.J. Lu :

https://gcc.gnu.org/g:ab71fd7ac7a2307723117c796e7ae4d7e9711058

commit r14-8966-gab71fd7ac7a2307723117c796e7ae4d7e9711058
Author: H.J. Lu 
Date:   Tue Feb 13 11:58:00 2024 -0800

x86-64: Use push2/pop2 only if the incoming stack is 16-byte aligned

Since push2/pop2 requires 16-byte stack alignment, don't use them if the
incoming stack isn't 16-byte aligned.

gcc/

PR target/113876
* config/i386/i386.cc (ix86_pro_and_epilogue_can_use_push2pop2):
Return false if the incoming stack isn't 16-byte aligned.

gcc/testsuite/

PR target/113876
* gcc.target/i386/pr113876.c: New test.

[Bug target/113876] ICE: in ix86_expand_epilogue, at config/i386/i386.cc:10101 with -O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf -mcmodel=large

2024-02-13 Thread hjl.tools at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113876

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2024-02-13
   Target Milestone|--- |14.0
 CC||crazylht at gmail dot com
 Ever confirmed|0   |1

--- Comment #2 from H.J. Lu  ---
A patch is at

https://patchwork.sourceware.org/project/gcc/list/?series=30888

[Bug target/113876] ICE: in ix86_expand_epilogue, at config/i386/i386.cc:10101 with -O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf -mcmodel=large

2024-02-13 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113876

Jakub Jelinek  changed:

   What|Removed |Added

Summary|ICE: in |ICE: in
   |ix86_expand_epilogue, at|ix86_expand_epilogue, at
   |config/i386/i386.cc:10101   |config/i386/i386.cc:10101
   |with -O |with -O
   |-mpreferred-stack-boundary= |-mpreferred-stack-boundary=
   |3 -finstrument-functions|3 -finstrument-functions
   |-mapxf -mcmodel=large and   |-mapxf -mcmodel=large
   |_BitInt()   |
 CC||hjl.tools at gmail dot com,
   ||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
Doesn't need UB in the testcase to reproduce,
/* { dg-options "-O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf
-mcmodel=large" } */

_BitInt(129)
bar (void)
{
  return 0;
}

ICEs too.

And it doesn't have to do anything together with _Bitint either,
/* { dg-options "-O -mpreferred-stack-boundary=3 -finstrument-functions -mapxf
-mcmodel=large" } */

void
bar (unsigned long *p)
{
  p[0] = 0;
  p[1] = 0;
  p[2] = 0;
}

ICEs the same.