public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-1020] Fix PR 109919: ICE in emit_move_insn with some bit tests
@ 2023-05-21  1:12 Andrew Pinski
  0 siblings, 0 replies; only message in thread
From: Andrew Pinski @ 2023-05-21  1:12 UTC (permalink / raw)
  To: gcc-cvs

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

commit r14-1020-gee0f1f2294baaecfa0c038fe7e8361949d1ebd68
Author: Andrew Pinski <apinski@marvell.com>
Date:   Sat May 20 21:14:23 2023 +0000

    Fix PR 109919: ICE in emit_move_insn with some bit tests
    
    The problem is I used expand_expr with the target but
    we don't want to use the target here as it is the wrong
    mode for the original expression. The testcase would ICE
    deap down while trying to do a move to use the target.
    Anyways just calling expand_expr with NULL_EXPR fixes
    the issue.
    
    Committed as obvious after a bootstrap/test on x86_64-linux-gnu.
    
            PR middle-end/109919
    
    gcc/ChangeLog:
    
            * expr.cc (expand_single_bit_test): Don't use the
            target for expand_expr.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.c-torture/compile/pr109919-1.c: New test.

Diff:
---
 gcc/expr.cc                                      | 2 +-
 gcc/testsuite/gcc.c-torture/compile/pr109919-1.c | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/gcc/expr.cc b/gcc/expr.cc
index 6849c9627d0..30c58c8dc5c 100644
--- a/gcc/expr.cc
+++ b/gcc/expr.cc
@@ -12956,7 +12956,7 @@ expand_single_bit_test (location_t loc, enum tree_code code,
   intermediate_type = ops_unsigned ? unsigned_type : signed_type;
   inner = fold_convert_loc (loc, intermediate_type, inner);
 
-  rtx inner0 = expand_expr (inner, target, VOIDmode, EXPAND_NORMAL);
+  rtx inner0 = expand_expr (inner, NULL_RTX, VOIDmode, EXPAND_NORMAL);
 
   inner0 = extract_bit_field (inner0, 1, bitnum, 1, target,
 			      operand_mode, mode, 0, NULL);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c b/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c
new file mode 100644
index 00000000000..bb612a1f020
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c
@@ -0,0 +1,9 @@
+/* { dg-options "-fno-tree-dce -fno-tree-vrp" } */
+int a;
+int main() {
+  int b = 1;
+  while (a) {
+    short c = b && ((a || a) & (a * c));
+  }
+  return 0;
+}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-05-21  1:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-21  1:12 [gcc r14-1020] Fix PR 109919: ICE in emit_move_insn with some bit tests Andrew Pinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).