Commit b66a1bac by Richard Guenther Committed by Richard Biener

gimple.c (canonicalize_cond_expr_cond): Strip conversions around truth-valued expressions.

2009-11-19  Richard Guenther  <rguenther@suse.de>

	* gimple.c (canonicalize_cond_expr_cond): Strip conversions
	around truth-valued expressions.
	* tree.c (free_lang_data): Untangle check for LTO frontend.

From-SVN: r154332
parent 92fa7608
2009-11-19 Richard Guenther <rguenther@suse.de>
* gimple.c (canonicalize_cond_expr_cond): Strip conversions
around truth-valued expressions.
* tree.c (free_lang_data): Untangle check for LTO frontend.
2009-11-19 Jakub Jelinek <jakub@redhat.com> 2009-11-19 Jakub Jelinek <jakub@redhat.com>
* tree.c (need_assembler_name_p): Use cgraph_get_node instead * tree.c (need_assembler_name_p): Use cgraph_get_node instead
...@@ -2937,9 +2937,14 @@ recalculate_side_effects (tree t) ...@@ -2937,9 +2937,14 @@ recalculate_side_effects (tree t)
tree tree
canonicalize_cond_expr_cond (tree t) canonicalize_cond_expr_cond (tree t)
{ {
/* Strip conversions around boolean operations. */
if (CONVERT_EXPR_P (t)
&& truth_value_p (TREE_CODE (TREE_OPERAND (t, 0))))
t = TREE_OPERAND (t, 0);
/* For (bool)x use x != 0. */ /* For (bool)x use x != 0. */
if (TREE_CODE (t) == NOP_EXPR if (CONVERT_EXPR_P (t)
&& TREE_TYPE (t) == boolean_type_node) && TREE_CODE (TREE_TYPE (t)) == BOOLEAN_TYPE)
{ {
tree top0 = TREE_OPERAND (t, 0); tree top0 = TREE_OPERAND (t, 0);
t = build2 (NE_EXPR, TREE_TYPE (t), t = build2 (NE_EXPR, TREE_TYPE (t),
......
...@@ -4921,6 +4921,10 @@ free_lang_data (void) ...@@ -4921,6 +4921,10 @@ free_lang_data (void)
{ {
unsigned i; unsigned i;
/* If we are the LTO frontend we have freed lang-specific data already. */
if (in_lto_p)
return 0;
/* Allocate and assign alias sets to the standard integer types /* Allocate and assign alias sets to the standard integer types
while the slots are still in the way the frontends generated them. */ while the slots are still in the way the frontends generated them. */
for (i = 0; i < itk_none; ++i) for (i = 0; i < itk_none; ++i)
...@@ -4929,8 +4933,7 @@ free_lang_data (void) ...@@ -4929,8 +4933,7 @@ free_lang_data (void)
/* FIXME. Remove after save_debug_info is working. */ /* FIXME. Remove after save_debug_info is working. */
if (!(flag_generate_lto if (!(flag_generate_lto
|| (!in_lto_p || (!flag_gtoggle && debug_info_level <= DINFO_LEVEL_TERSE)))
&& !flag_gtoggle && debug_info_level <= DINFO_LEVEL_TERSE)))
return 0; return 0;
/* Traverse the IL resetting language specific information for /* Traverse the IL resetting language specific information for
......
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