From: Richard Guenther Date: Thu, 19 Nov 2009 15:45:48 +0000 (+0000) Subject: gimple.c (canonicalize_cond_expr_cond): Strip conversions around truth-valued express... X-Git-Tag: releases/gcc-4.5.0~2269 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b66a1bac4615611113eafcd633406e761b1f544c;p=thirdparty%2Fgcc.git gimple.c (canonicalize_cond_expr_cond): Strip conversions around truth-valued expressions. 2009-11-19 Richard Guenther * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dec2c346e236..e4923fceb8e7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-11-19 Richard Guenther + + * 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 * tree.c (need_assembler_name_p): Use cgraph_get_node instead diff --git a/gcc/gimple.c b/gcc/gimple.c index 676e3fd46785..9cec865a728b 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -2937,9 +2937,14 @@ recalculate_side_effects (tree t) tree 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. */ - if (TREE_CODE (t) == NOP_EXPR - && TREE_TYPE (t) == boolean_type_node) + if (CONVERT_EXPR_P (t) + && TREE_CODE (TREE_TYPE (t)) == BOOLEAN_TYPE) { tree top0 = TREE_OPERAND (t, 0); t = build2 (NE_EXPR, TREE_TYPE (t), diff --git a/gcc/tree.c b/gcc/tree.c index df24eb4ad593..76e23f7b74a4 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4921,6 +4921,10 @@ free_lang_data (void) { 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 while the slots are still in the way the frontends generated them. */ for (i = 0; i < itk_none; ++i) @@ -4929,8 +4933,7 @@ free_lang_data (void) /* FIXME. Remove after save_debug_info is working. */ 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; /* Traverse the IL resetting language specific information for