re PR c/24644 (gcc-4.1 compiled ppc64 kernels do not boot)
authorDavid Edelsohn <edelsohn@gnu.org>
Fri, 11 Nov 2005 17:59:54 +0000 (17:59 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 11 Nov 2005 17:59:54 +0000 (12:59 -0500)
        PR 24644
        * common.opt (Wvolatile-register-var): New.
        * varasm.c (make_decl_rtl): Only emit warning when option
        specified.  Clarify warning message.
        * doc/invoke.texi (Wvolatile-register-var): Document new option.

        * doc/md.texi (copysign): Document standard named pattern.

From-SVN: r106791

gcc/ChangeLog
gcc/common.opt
gcc/doc/invoke.texi
gcc/doc/md.texi
gcc/varasm.c

index 425bc1ae521b882d16afba96ab43c46b5ed2b2b4..2d125ef96d853b015fb44388b6f6dbfd8b02a5f5 100644 (file)
@@ -1,3 +1,13 @@
+2005-11-11  David Edelsohn  <edelsohn@gnu.org>
+
+       PR 24644
+       * common.opt (Wvolatile-register-var): New.
+       * varasm.c (make_decl_rtl): Only emit warning when option
+       specified.  Clarify warning message.
+       * doc/invoke.texi (Wvolatile-register-var): Document new option.
+
+       * doc/md.texi (copysign): Document standard named pattern.
+
 2005-11-11  Jie Zhang  <jie.zhang@analog.com>
 
        * config/bfin/bfin.c (bfin_expand_strmov): Correctly move the trailing
index 67e91d39a853e2c4a808e476af38591c8b67e126..6ac77fdddee29ee15a31ffac909ee27f3d01124d 100644 (file)
@@ -173,6 +173,10 @@ Wunused-variable
 Common Var(warn_unused_variable)
 Warn when a variable is unused
 
+Wvolatile-register-var
+Common Var(warn_register_var)
+Warn when a register variable is declared volatile
+
 aux-info
 Common Separate
 -aux-info <file>       Emit declaration information into <file>
index 3e25d390ae090eef27ba7020a4002efa53ea5fee..bbc747863030a76f11a9272cdeec572e5a01191d 100644 (file)
@@ -245,7 +245,7 @@ Objective-C and Objective-C++ Dialects}.
 -Wunknown-pragmas  -Wno-pragmas -Wunreachable-code @gol
 -Wunused  -Wunused-function  -Wunused-label  -Wunused-parameter @gol
 -Wunused-value  -Wunused-variable  -Wvariadic-macros @gol
--Wwrite-strings}
+-Wvolatile-register-var  -Wwrite-strings}
 
 @item C-only Warning Options
 @gccoptlist{-Wbad-function-cast  -Wmissing-declarations @gol
@@ -3370,6 +3370,13 @@ Warn if variadic macros are used in pedantic ISO C90 mode, or the GNU
 alternate syntax when in pedantic ISO C99 mode.  This is default.
 To inhibit the warning messages, use @option{-Wno-variadic-macros}.
 
+@item -Wvolatile-register-var
+@opindex Wvolatile-register-var
+@opindex Wno-volatile-register-var
+Warn if a register variable is declared volatile.  The volatile
+modifier does not inhibit all optimizations that may eliminate reads
+and/or writes to register variables.
+
 @item -Wdisabled-optimization
 @opindex Wdisabled-optimization
 Warn if a requested optimization pass is disabled.  This warning does
index 4fc8c3b76cc4eca30938e01b067e7047f3a85e15..087f4441cc83ddbf69b069d8c0f87271305ccf3a 100644 (file)
@@ -3306,6 +3306,16 @@ corresponds to the C data type @code{double} and the @code{rintf}
 built-in function uses the mode which corresponds to the C data
 type @code{float}.
 
+@cindex @code{copysign@var{m}3} instruction pattern
+@item @samp{copysign@var{m}3}
+Store a value with the magnitude of operand 1 and the sign of operand
+2 into operand 0.
+
+The @code{copysign} built-in function of C always uses the mode which
+corresponds to the C data type @code{double} and the @code{copysignf}
+built-in function uses the mode which corresponds to the C data
+type @code{float}.
+
 @cindex @code{ffs@var{m}2} instruction pattern
 @item @samp{ffs@var{m}2}
 Store into operand 0 one plus the index of the least significant 1-bit
index ac511f658a98f1c1bf8295c4a000054ae643cd16..ad4d060a29faf1ab3e9a44c1fd524a35472b463d 100644 (file)
@@ -955,8 +955,9 @@ make_decl_rtl (tree decl)
              error ("global register variable has initial value");
            }
          if (TREE_THIS_VOLATILE (decl))
-           warning (0, "volatile register variables don%'t "
-                    "work as you might wish");
+           warning (OPT_Wvolatile_register_var,
+                    "optimization may eliminate reads and/or "
+                    "writes to register variables");
 
          /* If the user specified one of the eliminables registers here,
             e.g., FRAME_POINTER_REGNUM, we don't want to get this variable