2010-06-27 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/44683
+ * tree-ssa-dom.c (record_edge_info): Record equivalences for the
+ false edge from the inverted condition.
+
+2010-06-27 Richard Guenther <rguenther@suse.de>
+
PR middle-end/44684
* tree-ssa-alias.c (refs_may_alias_p_1): Allow SSA name refs.
(stmt_may_clobber_ref_p_1): Do not bother to call the oracle
+2010-06-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/44683
+ * gcc.c-torture/execute/pr44683.c: New testcase.
+
2010-06-27 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/noreturn3.ad[sb]: New test.
--- /dev/null
+int __attribute__((noinline,noclone))
+copysign_bug (double x)
+{
+ if (x != 0.0 && (x * 0.5 == x))
+ return 1;
+ if (__builtin_copysign(1.0, x) < 0.0)
+ return 2;
+ else
+ return 3;
+}
+int main(void)
+{
+ double x = -0.0;
+ if (copysign_bug (x) != 2)
+ __builtin_abort ();
+ return 0;
+}
+
edge_info = allocate_edge_info (false_edge);
record_conditions (edge_info, inverted, cond);
- if (code == NE_EXPR)
+ if (TREE_CODE (inverted) == EQ_EXPR)
{
edge_info->lhs = op1;
edge_info->rhs = op0;
edge_info = allocate_edge_info (false_edge);
record_conditions (edge_info, inverted, cond);
- if (TREE_CODE (cond) == NE_EXPR)
+ if (TREE_CODE (inverted) == EQ_EXPR)
{
edge_info->lhs = op0;
edge_info->rhs = op1;