re PR middle-end/85567 (internal compiler error: in gimplify_modify_expr, at gimplify.c:5797 when using sincos())

2018-05-02  Richard Biener  <rguenther@suse.de>

	PR middle-end/85567
	* gimplify.c (gimplify_save_expr): When in SSA form allow
	SAVE_EXPRs to compute to SSA vars.

	* gcc.dg/torture/pr85567.c: New testcase.

From-SVN: r259826
This commit is contained in:
Richard Biener 2018-05-02 07:59:34 +00:00 committed by Richard Biener
parent 014dcf477d
commit b18f161d55
4 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-05-02 Richard Biener <rguenther@suse.de>
PR middle-end/85567
* gimplify.c (gimplify_save_expr): When in SSA form allow
SAVE_EXPRs to compute to SSA vars.
2018-05-02 Jakub Jelinek <jakub@redhat.com>
PR target/85582

View File

@ -5931,8 +5931,11 @@ gimplify_save_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
}
else
/* The temporary may not be an SSA name as later abnormal and EH
control flow may invalidate use/def domination. */
val = get_initialized_tmp_var (val, pre_p, post_p, false);
control flow may invalidate use/def domination. When in SSA
form then assume there are no such issues and SAVE_EXPRs only
appear via GENERIC foldings. */
val = get_initialized_tmp_var (val, pre_p, post_p,
gimple_in_ssa_p (cfun));
TREE_OPERAND (*expr_p, 0) = val;
SAVE_EXPR_RESOLVED_P (*expr_p) = 1;

View File

@ -1,3 +1,8 @@
2018-05-02 Richard Biener <rguenther@suse.de>
PR middle-end/85567
* gcc.dg/torture/pr85567.c: New testcase.
2018-05-02 Jakub Jelinek <jakub@redhat.com>
PR target/85582

View File

@ -0,0 +1,16 @@
/* { dg-do compile } */
extern void sincos(double x, double *sinx, double *cosx);
void apply(void (*f)(double, double *, double *),
double x, double *sinx, double *cosx)
{
f(x, sinx, cosx);
return;
}
void apply_sincos(double x, double *sinx, double *cosx)
{
apply(sincos, x, sinx, cosx);
return;
}