diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/AST/Decl.h | 2 | ||||
| -rw-r--r-- | clang/test/Analysis/stack-addr-ps.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h index 9f2456fb6af..84ed2862f3f 100644 --- a/clang/include/clang/AST/Decl.h +++ b/clang/include/clang/AST/Decl.h @@ -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. diff --git a/clang/test/Analysis/stack-addr-ps.c b/clang/test/Analysis/stack-addr-ps.c index a443a32396f..d668f8fbee2 100644 --- a/clang/test/Analysis/stack-addr-ps.c +++ b/clang/test/Analysis/stack-addr-ps.c @@ -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 +} |

