PR tree-optimization/47391
* tree-ssa-ccp.c (get_symbol_constant_value): Don't optimize
if sym is volatile.
Backport from mainline
2011-01-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/47391
* gcc.dg/pr47391.c: New test.
From-SVN: r172112
2011-04-07 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/47391
+ * tree-ssa-ccp.c (get_symbol_constant_value): Don't optimize
+ if sym is volatile.
+
Backported from mainline
2010-07-01 Richard Guenther <rguenther@suse.de>
+2011-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/47391
+ * gcc.dg/pr47391.c: New test.
+
2011-04-07 Andrey Belevantsev <abel@ispras.ru>
Backport from mainline
--- /dev/null
+/* PR tree-optimization/47391 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+const volatile int v = 1;
+int i = 0;
+
+void
+foo (void)
+{
+ i = v;
+}
+
+int
+main (void)
+{
+ foo ();
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-not "i = 1;" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
get_symbol_constant_value (tree sym)
{
if (TREE_STATIC (sym)
- && (TREE_READONLY (sym)
+ && ((TREE_READONLY (sym) && !TREE_THIS_VOLATILE (sym))
|| TREE_CODE (sym) == CONST_DECL))
{
tree val = DECL_INITIAL (sym);