diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2017-05-24 08:12:27 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2017-05-24 08:12:27 +0000 |
commit | 258dfcb78d62909fc80092b4512093c0c85ad83a (patch) | |
tree | de82c4b2339ef71ed1288f495fda4d4473f248a7 | |
parent | 78672bd8fdff27789807b81d787202d3b8c3887a (diff) | |
download | gcc-258dfcb78d62909fc80092b4512093c0c85ad83a.zip gcc-258dfcb78d62909fc80092b4512093c0c85ad83a.tar.gz gcc-258dfcb78d62909fc80092b4512093c0c85ad83a.tar.bz2 |
var-tracking.c (track_expr_p): Do not return 0 for tracked record parameters passed indirectly.
* var-tracking.c (track_expr_p): Do not return 0 for tracked record
parameters passed indirectly.
From-SVN: r248402
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/var-tracking.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95b47f7..1bbeb7b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-05-24 Eric Botcazou <ebotcazou@adacore.com> + + * var-tracking.c (track_expr_p): Do not return 0 for tracked record + parameters passed indirectly. + 2017-05-23 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (*movdi_internal): Remove SSE4 diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 1b9f8dd..5c38c1d 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -5220,8 +5220,9 @@ track_expr_p (tree expr, bool need_rtl) if (decl_rtl && MEM_P (decl_rtl)) { /* Do not track structures and arrays. */ - if (GET_MODE (decl_rtl) == BLKmode - || AGGREGATE_TYPE_P (TREE_TYPE (realdecl))) + if ((GET_MODE (decl_rtl) == BLKmode + || AGGREGATE_TYPE_P (TREE_TYPE (realdecl))) + && !tracked_record_parameter_p (realdecl)) return 0; if (MEM_SIZE_KNOWN_P (decl_rtl) && MEM_SIZE (decl_rtl) > MAX_VAR_PARTS) |