d: Always set ASM_VOLATILE_P on asm statements (PR94425)
authorIain Buclaw <ibuclaw@gdcproject.org>
Mon, 30 Mar 2020 22:24:13 +0000 (00:24 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 7 Apr 2020 07:44:02 +0000 (09:44 +0200)
gcc/d/ChangeLog:

PR d/94425
* toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_VOLATILE_P
on all asm statements.

gcc/d/ChangeLog
gcc/d/toir.cc

index d27f83e77d474db756635d740656769ae1c11b5c..73fd18449545345c413ec19ecab6a0958d4ba22d 100644 (file)
@@ -1,3 +1,9 @@
+2020-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+       PR d/94425
+       * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_VOLATILE_P
+       on all asm statements.
+
 2020-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>
 
        PR d/90136
index 21e31dc93d405afcea7abe2487415918fa3c01e2..6aaf10bf4e4b599539b10befa174dcaf771d5ea4 100644 (file)
@@ -1427,8 +1427,9 @@ public:
     if (s->args == NULL && s->clobbers == NULL)
       ASM_INPUT_P (exp) = 1;
 
-    /* Asm statements are treated as volatile unless 'pure'.  */
-    ASM_VOLATILE_P (exp) = !(s->stc & STCpure);
+    /* All asm statements are assumed to have a side effect.  As a future
+       optimization, this could be unset when building in release mode.  */
+    ASM_VOLATILE_P (exp) = 1;
 
     add_stmt (exp);
   }