Message ID | CAFULd4bbtu1C5u6n88skPYrARLxJfHpdUwOTNLAkQmaFoYkHYw@mail.gmail.com |
---|---|
State | New |
Headers | show |
Series | [committed] x86: Emit "#" instead of calling gcc_unreachable for invalid insns. | expand |
On Thu, Feb 06, 2020 at 05:36:43PM +0100, Uros Bizjak wrote: > 2020-02-06 Uroš Bizjak <ubizjak@gmail.com> > > * config/i386/i386.md (*pushtf): Emit "#" instead of > calling gcc_unreachable in insn output. > (*pushxf): Ditto. > (*pushdf): Ditto. > (*pushsf_rex64): Ditto for alternatives other than 1. > (*pushsf): Ditto for alternatives other than 1. > > Committed to mainline. > > Uros. > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > index 496a8666643..34649c010b8 100644 > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -3032,7 +3032,7 @@ > "TARGET_64BIT || TARGET_SSE" > { > /* This insn should be already split before reg-stack. */ > - gcc_unreachable (); > + return ("#"); No need for those ()s around, just return "#"; would do. > @@ -3156,7 +3156,8 @@ > "TARGET_64BIT" > { > /* Anything else should be already split before reg-stack. */ > - gcc_assert (which_alternative == 1); > + if (which_alternative != 1) > + return ("#"); > return "push{q}\t%q1"; Shouldn't this be then "@ # push{q}\t%q1 #" instead then? > @@ -3169,7 +3170,8 @@ > "!TARGET_64BIT" > { > /* Anything else should be already split before reg-stack. */ > - gcc_assert (which_alternative == 1); > + if (which_alternative != 1) > + return ("#"); > return "push{l}\t%1"; > } > [(set_attr "type" "multi,push,multi") Likewise. Jakub
On Thu, Feb 6, 2020 at 6:07 PM Jakub Jelinek <jakub@redhat.com> wrote: > > On Thu, Feb 06, 2020 at 05:36:43PM +0100, Uros Bizjak wrote: > > 2020-02-06 Uroš Bizjak <ubizjak@gmail.com> > > > > * config/i386/i386.md (*pushtf): Emit "#" instead of > > calling gcc_unreachable in insn output. > > (*pushxf): Ditto. > > (*pushdf): Ditto. > > (*pushsf_rex64): Ditto for alternatives other than 1. > > (*pushsf): Ditto for alternatives other than 1. > > > > Committed to mainline. > > > > Uros. > > > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > > index 496a8666643..34649c010b8 100644 > > --- a/gcc/config/i386/i386.md > > +++ b/gcc/config/i386/i386.md > > @@ -3032,7 +3032,7 @@ > > "TARGET_64BIT || TARGET_SSE" > > { > > /* This insn should be already split before reg-stack. */ > > - gcc_unreachable (); > > + return ("#"); > > No need for those ()s around, just return "#"; would do. Eh... will "fix". > > @@ -3156,7 +3156,8 @@ > > "TARGET_64BIT" > > { > > /* Anything else should be already split before reg-stack. */ > > - gcc_assert (which_alternative == 1); > > + if (which_alternative != 1) > > + return ("#"); > > return "push{q}\t%q1"; > > Shouldn't this be then > "@ > # > push{q}\t%q1 > #" > instead then? I have considered this option, but choose the above. It just looks better. Thanks, Uros.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 496a8666643..34649c010b8 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -3032,7 +3032,7 @@ "TARGET_64BIT || TARGET_SSE" { /* This insn should be already split before reg-stack. */ - gcc_unreachable (); + return ("#"); } [(set_attr "isa" "*,x64") (set_attr "type" "multi") @@ -3087,7 +3087,7 @@ "" { /* This insn should be already split before reg-stack. */ - gcc_unreachable (); + return ("#"); } [(set_attr "isa" "*,*,*,nox64,x64") (set_attr "type" "multi") @@ -3123,7 +3123,7 @@ "" { /* This insn should be already split before reg-stack. */ - gcc_unreachable (); + return ("#"); } [(set_attr "isa" "*,nox64,nox64,nox64,x64,sse2") (set_attr "type" "multi") @@ -3156,7 +3156,8 @@ "TARGET_64BIT" { /* Anything else should be already split before reg-stack. */ - gcc_assert (which_alternative == 1); + if (which_alternative != 1) + return ("#"); return "push{q}\t%q1"; } [(set_attr "type" "multi,push,multi") @@ -3169,7 +3170,8 @@ "!TARGET_64BIT" { /* Anything else should be already split before reg-stack. */ - gcc_assert (which_alternative == 1); + if (which_alternative != 1) + return ("#"); return "push{l}\t%1"; } [(set_attr "type" "multi,push,multi")