aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2017-05-24 08:12:27 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2017-05-24 08:12:27 +0000
commit258dfcb78d62909fc80092b4512093c0c85ad83a (patch)
treede82c4b2339ef71ed1288f495fda4d4473f248a7 /gcc
parent78672bd8fdff27789807b81d787202d3b8c3887a (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/var-tracking.c5
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)