diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr85955.c | 15 |
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f3e654..fda150a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-06-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/85955 + * builtins.c (fold_builtin_sincos): Convert pointers to + destination to appropriate type before dereferencing. + 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode. diff --git a/gcc/builtins.c b/gcc/builtins.c index c96ac38..d4150d8 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -8266,6 +8266,9 @@ fold_builtin_sincos (location_t loc, call = builtin_save_expr (call); } + tree ptype = build_pointer_type (type); + arg1 = fold_convert (ptype, arg1); + arg2 = fold_convert (ptype, arg2); return build2 (COMPOUND_EXPR, void_type_node, build2 (MODIFY_EXPR, void_type_node, build_fold_indirect_ref_loc (loc, arg1), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e27cf41..821e088 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-04 Richard Biener <rguenther@suse.de> + + PR tree-optimization/85955 + * gcc.dg/pr85955.c: New testcase. + 2018-06-04 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85981 diff --git a/gcc/testsuite/gcc.dg/pr85955.c b/gcc/testsuite/gcc.dg/pr85955.c new file mode 100644 index 0000000..7f67f62 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr85955.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -w" } */ + +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; +} |