public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* optimization/6059: -fvolatile-global and -fvolatile-static fails to set volatile
@ 2002-03-26 2:46 Anders Blomdell
0 siblings, 0 replies; only message in thread
From: Anders Blomdell @ 2002-03-26 2:46 UTC (permalink / raw)
To: gcc-gnats
>Number: 6059
>Category: optimization
>Synopsis: -fvolatile-* doesn't mark variables as volatile
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Tue Mar 26 02:46:10 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: Anders Blomdell <anders.blomdell@control.lth.se>
>Release: 3.0.4
>Organization:
Department of Automatic Control
>Environment:
System: Linux aljazari 2.4.13-KURT #2 Thu Nov 8 10:49:33 CET 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: m68k-unknown-elf
configured with: ../../../gcc-3.0.4/configure --prefix=/usr/local/packages/cross/m68k-elf --target=m68k-elf --with-newlib : (reconfigured) ../../../gcc-3.0.4/configure --prefix=/usr/local/packages/cross/m68k-elf --target=m68k-elf --with-newlib : (reconfigured) ../../../gcc-3.0.4/configure --with-gcc-version-trigger=/work/aljazari2/andersb/gnu/gcc-3.0.4/gcc/version.c --host=i686-pc-linux-gnu --prefix=/usr/local/packages/cross/m68k-elf --target=m68k-elf --with-newlib --enable-checking=misc,tree,rtl,gc,gcac
>Description:
-fvolatile-* doesn't have the same effect as declaring a variable as volatile.
>How-To-Repeat:
Compile this small C program with -O*, where f and g should produce identical code when -fvolatile-* is specified.
static int gi;
static volatile int vgi;
void f() {
int i;
for (i = 0 ; i < 1000 ; i++) { gi++; }
}
void vf() {
int i;
for (i = 0 ; i < 1000 ; i++) { vgi++; }
}
>Fix:
Apply this patch:
--- varasm.c~ Sat Sep 22 03:33:20 2001
+++ varasm.c Tue Mar 26 11:26:25 2002
@@ -743,7 +743,10 @@
&& TREE_PUBLIC (decl))
|| ((flag_volatile_static && TREE_CODE (decl) == VAR_DECL
&& (TREE_PUBLIC (decl) || TREE_STATIC (decl)))))
- TREE_SIDE_EFFECTS (decl) = 1;
+ {
+ TREE_SIDE_EFFECTS (decl) = 1;
+ TREE_THIS_VOLATILE(decl) = 1;
+ }
SET_DECL_RTL (decl, gen_rtx_MEM (DECL_MODE (decl),
gen_rtx_SYMBOL_REF (Pmode, name)));
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-03-26 10:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-26 2:46 optimization/6059: -fvolatile-global and -fvolatile-static fails to set volatile Anders Blomdell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).