Commit 2896d056 by Zack Weinberg

re PR c/10178 (ICE in tree_low_cst)

	PR 10178
	* langhooks.h (struct lang_hooks): Add no_body_blocks bool.
	* langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): New; default false.
	* c-lang.c, objc/objc-lang.c: Override LANG_HOOKS_NO_BODY_BLOCKS
	to true.
	* stmt.c (is_body_block): If lang_hooks.no_body_blocks, always
	return 0.

From-SVN: r68483
parent 8f7193b8
2003-06-25 Zack Weinberg <zack@codesourcery.com>
PR 10178
* langhooks.h (struct lang_hooks): Add no_body_blocks bool.
* langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): New; default false.
* c-lang.c, objc/objc-lang.c: Override LANG_HOOKS_NO_BODY_BLOCKS
to true.
* stmt.c (is_body_block): If lang_hooks.no_body_blocks, always
return 0.
2003-06-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2003-06-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Makefile.in (bt-load.o): Depend on $(TM_P_H). * Makefile.in (bt-load.o): Depend on $(TM_P_H).
......
...@@ -67,6 +67,8 @@ static int c_init_options (void); ...@@ -67,6 +67,8 @@ static int c_init_options (void);
#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
#undef LANG_HOOKS_STATICP #undef LANG_HOOKS_STATICP
#define LANG_HOOKS_STATICP c_staticp #define LANG_HOOKS_STATICP c_staticp
#undef LANG_HOOKS_NO_BODY_BLOCKS
#define LANG_HOOKS_NO_BODY_BLOCKS true
#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
#undef LANG_HOOKS_PRINT_IDENTIFIER #undef LANG_HOOKS_PRINT_IDENTIFIER
......
...@@ -107,6 +107,7 @@ void write_global_declarations PARAMS ((void)); ...@@ -107,6 +107,7 @@ void write_global_declarations PARAMS ((void));
#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lhd_set_decl_assembler_name #define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lhd_set_decl_assembler_name
#define LANG_HOOKS_CAN_USE_BIT_FIELDS_P lhd_can_use_bit_fields_p #define LANG_HOOKS_CAN_USE_BIT_FIELDS_P lhd_can_use_bit_fields_p
#define LANG_HOOKS_HONOR_READONLY false #define LANG_HOOKS_HONOR_READONLY false
#define LANG_HOOKS_NO_BODY_BLOCKS false
#define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing #define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing
#define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing #define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing
#define LANG_HOOKS_PRINT_DECL lhd_print_tree_nothing #define LANG_HOOKS_PRINT_DECL lhd_print_tree_nothing
...@@ -266,6 +267,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree)); ...@@ -266,6 +267,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree));
LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, \ LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, \
LANG_HOOKS_CAN_USE_BIT_FIELDS_P, \ LANG_HOOKS_CAN_USE_BIT_FIELDS_P, \
LANG_HOOKS_HONOR_READONLY, \ LANG_HOOKS_HONOR_READONLY, \
LANG_HOOKS_NO_BODY_BLOCKS, \
LANG_HOOKS_PRINT_STATISTICS, \ LANG_HOOKS_PRINT_STATISTICS, \
LANG_HOOKS_PRINT_XNODE, \ LANG_HOOKS_PRINT_XNODE, \
LANG_HOOKS_PRINT_DECL, \ LANG_HOOKS_PRINT_DECL, \
......
...@@ -328,6 +328,11 @@ struct lang_hooks ...@@ -328,6 +328,11 @@ struct lang_hooks
/* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */
bool honor_readonly; bool honor_readonly;
/* Nonzero if this front end does not generate a dummy BLOCK between
the outermost scope of the function and the FUNCTION_DECL. See
is_body_block in stmt.c, and its callers. */
bool no_body_blocks;
/* The front end can add its own statistics to -fmem-report with /* The front end can add its own statistics to -fmem-report with
this hook. It should output to stderr. */ this hook. It should output to stderr. */
void (*print_statistics) PARAMS ((void)); void (*print_statistics) PARAMS ((void));
......
...@@ -65,6 +65,8 @@ static int objc_init_options PARAMS ((void)); ...@@ -65,6 +65,8 @@ static int objc_init_options PARAMS ((void));
#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
#undef LANG_HOOKS_STATICP #undef LANG_HOOKS_STATICP
#define LANG_HOOKS_STATICP c_staticp #define LANG_HOOKS_STATICP c_staticp
#undef LANG_HOOKS_NO_BODY_BLOCKS
#define LANG_HOOKS_NO_BODY_BLOCKS true
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl
#undef LANG_HOOKS_PRINT_IDENTIFIER #undef LANG_HOOKS_PRINT_IDENTIFIER
......
...@@ -3511,6 +3511,9 @@ int ...@@ -3511,6 +3511,9 @@ int
is_body_block (stmt) is_body_block (stmt)
tree stmt; tree stmt;
{ {
if (lang_hooks.no_body_blocks)
return 0;
if (TREE_CODE (stmt) == BLOCK) if (TREE_CODE (stmt) == BLOCK)
{ {
tree parent = BLOCK_SUPERCONTEXT (stmt); tree parent = BLOCK_SUPERCONTEXT (stmt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment