| Index: gcc/gcc/c-semantics.c
|
| diff --git a/gcc/gcc/c-semantics.c b/gcc/gcc/c-semantics.c
|
| index 7731ac9351f52db3b65e059050754445a2e49f4c..2bfad472db071736de9b406c60ecbc41afb0b77d 100644
|
| --- a/gcc/gcc/c-semantics.c
|
| +++ b/gcc/gcc/c-semantics.c
|
| @@ -1,6 +1,4 @@
|
| -/* This file contains the definitions and documentation for the common
|
| - tree codes used in the GNU C and C++ compilers (see c-common.def
|
| - for the standard codes).
|
| +/* This file contains subroutine used by the C front-end to construct GENERIC.
|
| Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
|
| Free Software Foundation, Inc.
|
| Written by Benjamin Chelf (chelf@codesourcery.com).
|
| @@ -72,6 +70,8 @@ pop_stmt_list (tree t)
|
| {
|
| chain = TREE_CHAIN (u);
|
| TREE_CHAIN (u) = NULL_TREE;
|
| + if (chain)
|
| + STATEMENT_LIST_HAS_LABEL (chain) |= STATEMENT_LIST_HAS_LABEL (u);
|
| if (t == u)
|
| break;
|
| u = chain;
|
| @@ -103,12 +103,12 @@ pop_stmt_list (tree t)
|
|
|
| /* Build a generic statement based on the given type of node and
|
| arguments. Similar to `build_nt', except that we set
|
| - EXPR_LOCATION to be the current source location. */
|
| + EXPR_LOCATION to LOC. */
|
| /* ??? This should be obsolete with the lineno_stmt productions
|
| in the grammar. */
|
|
|
| tree
|
| -build_stmt (enum tree_code code, ...)
|
| +build_stmt (location_t loc, enum tree_code code, ...)
|
| {
|
| tree ret;
|
| int length, i;
|
| @@ -123,7 +123,7 @@ build_stmt (enum tree_code code, ...)
|
| ret = make_node (code);
|
| TREE_TYPE (ret) = void_type_node;
|
| length = TREE_CODE_LENGTH (code);
|
| - SET_EXPR_LOCATION (ret, input_location);
|
| + SET_EXPR_LOCATION (ret, loc);
|
|
|
| /* TREE_SIDE_EFFECTS will already be set for statements with
|
| implicit side effects. Here we make sure it is set for other
|
| @@ -145,27 +145,11 @@ build_stmt (enum tree_code code, ...)
|
| return ret;
|
| }
|
|
|
| -/* Let the back-end know about DECL. */
|
| -
|
| -void
|
| -emit_local_var (tree decl)
|
| -{
|
| - /* Create RTL for this variable. */
|
| - if (!DECL_RTL_SET_P (decl))
|
| - {
|
| - if (DECL_HARD_REGISTER (decl))
|
| - /* The user specified an assembler name for this variable.
|
| - Set that up now. */
|
| - rest_of_decl_compilation (decl, 0, 0);
|
| - else
|
| - expand_decl (decl);
|
| - }
|
| -}
|
| -
|
| /* Create a CASE_LABEL_EXPR tree node and return it. */
|
|
|
| tree
|
| -build_case_label (tree low_value, tree high_value, tree label_decl)
|
| +build_case_label (location_t loc,
|
| + tree low_value, tree high_value, tree label_decl)
|
| {
|
| - return build_stmt (CASE_LABEL_EXPR, low_value, high_value, label_decl);
|
| + return build_stmt (loc, CASE_LABEL_EXPR, low_value, high_value, label_decl);
|
| }
|
|
|