From: Richard Kenner Date: Mon, 6 May 1996 19:41:35 +0000 (-0400) Subject: (truthvalue_conversion, case ADDR_EXPR): Don't treat address of X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fc0c675f04a8eb8d197c6e924c6f2d4198a69041;p=gcc.git (truthvalue_conversion, case ADDR_EXPR): Don't treat address of external decl as always nonzero. From-SVN: r11941 --- diff --git a/gcc/c-common.c b/gcc/c-common.c index 3c9018ad268..8a834dd072f 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -2080,6 +2080,12 @@ truthvalue_conversion (expr) return real_zerop (expr) ? boolean_false_node : boolean_true_node; case ADDR_EXPR: + /* If we are taking the address of a external decl, it might be zero + if it is weak, so we cannot optimize. */ + if (TREE_CODE_CLASS (TREE_CODE (TREE_OPERAND (expr, 0))) == 'd' + && DECL_EXTERNAL (TREE_OPERAND (expr, 0))) + break; + if (TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 0))) return build (COMPOUND_EXPR, boolean_type_node, TREE_OPERAND (expr, 0), boolean_true_node);