[cfe-commits] r55739 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/Sema/expr-address-of.c
Daniel Dunbar
daniel at zuster.org
Wed Sep 3 14:54:22 PDT 2008
Author: ddunbar
Date: Wed Sep 3 16:54:21 2008
New Revision: 55739
URL: http://llvm.org/viewvc/llvm-project?rev=55739&view=rev
Log:
Set register storage class correctly for function parameters.
- PR2730
Modified:
cfe/trunk/lib/Sema/SemaDecl.cpp
cfe/trunk/test/Sema/expr-address-of.c
Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=55739&r1=55738&r2=55739&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Sep 3 16:54:21 2008
@@ -1421,8 +1421,10 @@
const DeclSpec &DS = D.getDeclSpec();
// Verify C99 6.7.5.3p2: The only SCS allowed is 'register'.
- if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified &&
- DS.getStorageClassSpec() != DeclSpec::SCS_register) {
+ VarDecl::StorageClass StorageClass = VarDecl::None;
+ if (DS.getStorageClassSpec() == DeclSpec::SCS_register) {
+ StorageClass = VarDecl::Register;
+ } else if (DS.getStorageClassSpec() != DeclSpec::SCS_unspecified) {
Diag(DS.getStorageClassSpecLoc(),
diag::err_invalid_storage_class_in_func_decl);
D.getMutableDeclSpec().ClearStorageClassSpecs();
@@ -1485,7 +1487,7 @@
ParmVarDecl *New = ParmVarDecl::Create(Context, CurContext,
D.getIdentifierLoc(), II,
- parmDeclType, VarDecl::None,
+ parmDeclType, StorageClass,
0, 0);
if (D.getInvalidType())
Modified: cfe/trunk/test/Sema/expr-address-of.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/expr-address-of.c?rev=55739&r1=55738&r2=55739&view=diff
==============================================================================
--- cfe/trunk/test/Sema/expr-address-of.c (original)
+++ cfe/trunk/test/Sema/expr-address-of.c Wed Sep 3 16:54:21 2008
@@ -86,3 +86,6 @@
int *_dummy1 = &(arr + 1); // expected-error {{address expression must be an lvalue or a function designator}}
}
+void f6(register int x) {
+ int * dummy0 = &x; // expected-error {{address of register variable requested}}
+}
More information about the cfe-commits
mailing list