2016-09-29 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/77768
+ * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ Handle stores to readonly memory when removing redundant stores.
+
+2016-09-29 Richard Biener <rguenther@suse.de>
+
PR middle-end/77407
* match.pd: Add X / abs (X) -> X < 0 ? -1 : 1 and
X / -X -> -1 simplifications.
+2016-09-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/77768
+ * gcc.dg/torture/pr77768.c: New testcase.
+
2016-09-28 Richard Biener <rguenther@suse.de>
PR middle-end/77407
--- /dev/null
+/* { dg-do run } */
+
+static const int a;
+int b;
+int *c, *d;
+int main()
+{
+ c = (int *)&a;
+ c == d ?: __builtin_exit(0);
+ for (; b; b++ >= (*d = a))
+ ;
+ return 0;
+}
&& operand_equal_p (val, rhs, 0))
{
/* We can only remove the later store if the former aliases
- at least all accesses the later one does. */
+ at least all accesses the later one does or if the store
+ was to readonly memory storing the same value. */
alias_set_type set = get_alias_set (lhs);
- if (vnresult->set == set
+ if (! vnresult
+ || vnresult->set == set
|| alias_set_subset_of (set, vnresult->set))
{
if (dump_file && (dump_flags & TDF_DETAILS))