https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109919

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Simple one line fix:
```
apinski@xeond:~/src/upstream-gcc/gcc/objdir/gcc$ git diff
diff --git a/gcc/expr.cc b/gcc/expr.cc
index 2070198acda..02f24c00148 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);

```

To explain what is happening is simple, target in this case is QImode but for
inner we would need a SImode. Anyways the fix is not specify if we should use
target as an hint here.

Reply via email to