]> granicus.if.org Git - clang/commitdiff
Register parameters have local storage.
authorAnna Zaks <ganna@apple.com>
Wed, 4 Feb 2015 07:15:12 +0000 (07:15 +0000)
committerAnna Zaks <ganna@apple.com>
Wed, 4 Feb 2015 07:15:12 +0000 (07:15 +0000)
Fixes a regression introduced in r209149.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228119 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h
test/Analysis/stack-addr-ps.c

index 9f2456fb6af753eaf15be414222fd5bf9809aea6..84ed2862f3fd6380e032b83997c97d304e1278ad 100644 (file)
@@ -840,7 +840,7 @@ public:
       return !isFileVarDecl() && getTSCSpec() == TSCS_unspecified;
 
     // Global Named Register (GNU extension)
-    if (getStorageClass() == SC_Register && !isLocalVarDecl())
+    if (getStorageClass() == SC_Register && !isLocalVarDeclOrParm())
       return false;
 
     // Return true for:  Auto, Register.
index a443a32396f59158421b1d84f0928ca1d2a8d9d0..d668f8fbee2da4b06f08b1ecd03791eb74255398 100644 (file)
@@ -90,3 +90,10 @@ RDar10348049 test_rdar10348049(void) {
   return b; // no-warning
 }
 
+void testRegister(register const char *reg) {
+    if (reg) (void)reg[0];
+}
+void callTestRegister() {
+    char buf[20];
+    testRegister(buf); // no-warning
+}