diff options
-rw-r--r-- | gcc/ChangeLog.parloop | 5 | ||||
-rw-r--r-- | gcc/tree-parloops.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog.parloop b/gcc/ChangeLog.parloop index 1bf3ca75279..ad531d1d1d2 100644 --- a/gcc/ChangeLog.parloop +++ b/gcc/ChangeLog.parloop @@ -1,3 +1,8 @@ +2006-10-01 Zdenek Dvorak <dvorakz@suse.cz> + + * tree-parloops.c (eliminate_local_variables_1): Handle addresses of + non-decls correctly. + 2006-09-27 Zdenek Dvorak <dvorakz@suse.cz> Branch created. Initial commit. diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index bb7305aed30..9e558420859 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -319,10 +319,12 @@ eliminate_local_variables_1 (tree *tp, int *walk_subtrees, void *data) if (TREE_CODE (t) == ADDR_EXPR) { - *walk_subtrees = 0; - var = TREE_OPERAND (t, 0); - if (DECL_EXTERNAL (var)) + if (!DECL_P (var)) + return NULL_TREE; + + *walk_subtrees = 0; + if (!SSA_VAR_P (var) || DECL_EXTERNAL (var)) return NULL_TREE; addr_type = TREE_TYPE (t); |