diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 98b8dbc9c0719e776d60d2754be1c5bfb280959a..c9b5405fbe1537deffb0e79b0837104d4f478684 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3497,7 +3497,7 @@ Sema::DeclTy *Sema::ActOnEnumConstant(Scope *S, DeclTy *theEnumDecl, else Diag(IdLoc, diag::err_redefinition) << Id; Diag(PrevDecl->getLocation(), diag::note_previous_definition); - Val->Destroy(Context); + if (Val) Val->Destroy(Context); return 0; } } diff --git a/clang/test/Parser/control-scope.c b/clang/test/Parser/control-scope.c index 3d588d63b4ccf432df89bb7d0a058fa6f07d73b3..4beed7eecd3d2ad3ca4920745b35c80412cf97d6 100644 --- a/clang/test/Parser/control-scope.c +++ b/clang/test/Parser/control-scope.c @@ -1,8 +1,8 @@ -// RUN: not clang %s -std=c90 && +// RUN: clang %s -std=c90 -verify && // RUN: clang %s -std=c99 int f (int z) { - if (z + sizeof (enum {a})) - return 1 + sizeof (enum {a}); + if (z + sizeof (enum {a})) // expected-note {{previous definition is here}} + return 1 + sizeof (enum {a}); // expected-error {{redefinition of enumerator 'a'}} return 0; }