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:
parent
014dcf477d
commit
b18f161d55
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
16
gcc/testsuite/gcc.dg/torture/pr85567.c
Normal file
16
gcc/testsuite/gcc.dg/torture/pr85567.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user