diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -166,9 +166,6 @@ /// DeclSpec. unsigned chunkIndex; - /// Whether there are non-trivial modifications to the decl spec. - bool trivial; - /// Whether we saved the attributes in the decl spec. bool hasSavedAttrs; @@ -200,8 +197,8 @@ public: TypeProcessingState(Sema &sema, Declarator &declarator) : sema(sema), declarator(declarator), - chunkIndex(declarator.getNumTypeObjects()), trivial(true), - hasSavedAttrs(false), parsedNoDeref(false) {} + chunkIndex(declarator.getNumTypeObjects()), hasSavedAttrs(false), + parsedNoDeref(false) {} Sema &getSema() const { return sema; @@ -238,7 +235,6 @@ DeclSpec &spec = getMutableDeclSpec(); llvm::append_range(savedAttrs, llvm::make_pointer_range(spec.getAttributes())); - trivial &= savedAttrs.empty(); hasSavedAttrs = true; } @@ -330,7 +326,8 @@ bool didParseNoDeref() const { return parsedNoDeref; } ~TypeProcessingState() { - if (trivial) return; + if (savedAttrs.empty()) + return; restoreDeclSpecAttrs(); }