diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50aa8f191dbfb9f19a82b16b345a9ab8d9081e99..af87922453b6e9c86b56e94ccb7596b30148307a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-02-04 Jan Hubicka <jh@suse.cz> + + * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into + vectors might cause maybe_lookup_element_for_expr to be called + on non-sra-candidate. + 2007-02-04 Kazu Hirata <kazu@codesourcery.com> * config/bfin/bfin-modes.def, config/bfin/bfin.c, diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index a2d28cac2c42516dc8b23f4f7d556ce6514f6400..03f9b59526a1895f31414e850756ef89e56e29d7 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -793,10 +793,13 @@ sra_walk_expr (tree *expr_p, block_stmt_iterator *bsi, bool is_output, /* A bit field reference to a specific vector is scalarized but for ones for inputs need to be marked as used on the left hand size so when we scalarize it, we can mark that variable as non renamable. */ - if (is_output && TREE_CODE (TREE_TYPE (TREE_OPERAND (inner, 0))) == VECTOR_TYPE) + if (is_output + && TREE_CODE (TREE_TYPE (TREE_OPERAND (inner, 0))) == VECTOR_TYPE) { - struct sra_elt *elt = maybe_lookup_element_for_expr (TREE_OPERAND (inner, 0)); - elt->is_vector_lhs = true; + struct sra_elt *elt + = maybe_lookup_element_for_expr (TREE_OPERAND (inner, 0)); + if (elt) + elt->is_vector_lhs = true; } /* A bit field reference (access to *multiple* fields simultaneously) is not currently scalarized. Consider this an access to the