]> gcc.gnu.org Git - gcc.git/commitdiff
re PR middle-end/18160 (ICE on taking register variable address)
authorAdam Nemet <anemet@lnxw.com>
Wed, 10 Nov 2004 21:09:25 +0000 (21:09 +0000)
committerAdam Nemet <nemet@gcc.gnu.org>
Wed, 10 Nov 2004 21:09:25 +0000 (21:09 +0000)
PR middle-end/18160
* typeck.c (cxx_mark_addressable): Issue an error if address of an
explicit register variable is requested.

From-SVN: r90452

gcc/cp/ChangeLog
gcc/cp/typeck.c

index 080e2460aa62017c44b96a286508157db4a864ff..d6a7eeb675f772ca63b30a23a48eb6847f94aa90 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-10  Adam Nemet  <anemet@lnxw.com>
+
+       PR middle-end/18160  
+       * typeck.c (cxx_mark_addressable): Issue an error if address of an
+       explicit register variable is requested.
+
 2004-11-10  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/18143
index c83d33a5d6e6152f6d2691b20c11c4a053cae30d..ce3f2f768a00a4e79223364b5dd9fdc9608ab71d 100644 (file)
@@ -4343,9 +4343,16 @@ cxx_mark_addressable (tree exp)
       case CONST_DECL:
       case RESULT_DECL:
        if (DECL_REGISTER (x) && !TREE_ADDRESSABLE (x)
-           && !DECL_ARTIFICIAL (x) && extra_warnings)
-         warning ("address requested for %qD, which is declared %<register%>",
-                   x);
+           && !DECL_ARTIFICIAL (x))
+         if (DECL_HARD_REGISTER (x) != 0)
+           {
+             error
+               ("address of explicit register variable %qD requested", x);
+             return false;
+           }
+         else if (extra_warnings)
+           warning
+             ("address requested for %qD, which is declared %<register%>", x);
        TREE_ADDRESSABLE (x) = 1;
        return true;
 
This page took 0.088019 seconds and 5 git commands to generate.