Commit da8ea71e by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/85878 (ICE in convert_mode_scalar, at expr.c:287)

	PR middle-end/85878
	* expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
	check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
	Only call store_expr for halves if the mode is the same.

	* gfortran.fortran-torture/compile/pr85878.f90: New test.

From-SVN: r261659
parent fe7a23a6
2018-06-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/85878
* expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
Only call store_expr for halves if the mode is the same.
PR middle-end/86123
* match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
Fix up comment formatting.
......
......@@ -5150,12 +5150,12 @@ expand_assignment (tree to, tree from, bool nontemporal)
gcc_checking_assert (COMPLEX_MODE_P (to_mode));
poly_int64 mode_bitsize = GET_MODE_BITSIZE (to_mode);
unsigned short inner_bitsize = GET_MODE_UNIT_BITSIZE (to_mode);
if (TYPE_MODE (TREE_TYPE (from)) == GET_MODE (to_rtx)
&& COMPLEX_MODE_P (GET_MODE (to_rtx))
if (TYPE_MODE (TREE_TYPE (from)) == to_mode
&& known_eq (bitpos, 0)
&& known_eq (bitsize, mode_bitsize))
result = store_expr (from, to_rtx, false, nontemporal, reversep);
else if (known_eq (bitsize, inner_bitsize)
else if (TYPE_MODE (TREE_TYPE (from)) == GET_MODE_INNER (to_mode)
&& known_eq (bitsize, inner_bitsize)
&& (known_eq (bitpos, 0)
|| known_eq (bitpos, inner_bitsize)))
result = store_expr (from, XEXP (to_rtx, maybe_ne (bitpos, 0)),
......
2018-06-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/85878
* gfortran.fortran-torture/compile/pr85878.f90: New test.
PR middle-end/86123
* gcc.c-torture/compile/pr86123.c: New test.
......
! PR middle-end/85878
program pr85878
real :: a
complex :: c = (2.0, 3.0)
print *, c
print *, transfer (a, c)
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment