Commit fc0c675f by Richard Kenner

(truthvalue_conversion, case ADDR_EXPR): Don't treat address of

external decl as always nonzero.

From-SVN: r11941
parent 2786cbad
...@@ -2080,6 +2080,12 @@ truthvalue_conversion (expr) ...@@ -2080,6 +2080,12 @@ truthvalue_conversion (expr)
return real_zerop (expr) ? boolean_false_node : boolean_true_node; return real_zerop (expr) ? boolean_false_node : boolean_true_node;
case ADDR_EXPR: 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))) if (TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 0)))
return build (COMPOUND_EXPR, boolean_type_node, return build (COMPOUND_EXPR, boolean_type_node,
TREE_OPERAND (expr, 0), boolean_true_node); TREE_OPERAND (expr, 0), boolean_true_node);
......
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