Author: Martin Boehme Date: 2022-04-29T15:34:30+02:00 New Revision: 23c10e8d0f97dc38c9f620541c7f3ffd04bef905
URL: https://github.com/llvm/llvm-project/commit/23c10e8d0f97dc38c9f620541c7f3ffd04bef905 DIFF: https://github.com/llvm/llvm-project/commit/23c10e8d0f97dc38c9f620541c7f3ffd04bef905.diff LOG: [clang] Eliminate TypeProcessingState::trivial. This flag is redundant -- it's true iff `savedAttrs` is empty. Querying `savedAttrs.empty()` should not take any more time than querying the `trivial` flag, so this should not have a performance impact either. I noticed this while working on https://reviews.llvm.org/D111548. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D123783 Added: Modified: clang/lib/Sema/SemaType.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index c0a2af7c98eb..6f34e4237bcb 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -166,12 +166,6 @@ namespace { /// 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; - /// The original set of attributes on the DeclSpec. SmallVector<ParsedAttr *, 2> savedAttrs; @@ -200,8 +194,7 @@ namespace { public: TypeProcessingState(Sema &sema, Declarator &declarator) : sema(sema), declarator(declarator), - chunkIndex(declarator.getNumTypeObjects()), trivial(true), - hasSavedAttrs(false), parsedNoDeref(false) {} + chunkIndex(declarator.getNumTypeObjects()), parsedNoDeref(false) {} Sema &getSema() const { return sema; @@ -233,13 +226,12 @@ namespace { /// Save the current set of attributes on the DeclSpec. void saveDeclSpecAttrs() { // Don't try to save them multiple times. - if (hasSavedAttrs) return; + if (!savedAttrs.empty()) + return; DeclSpec &spec = getMutableDeclSpec(); llvm::append_range(savedAttrs, llvm::make_pointer_range(spec.getAttributes())); - trivial &= savedAttrs.empty(); - hasSavedAttrs = true; } /// Record that we had nowhere to put the given type attribute. @@ -330,23 +322,18 @@ namespace { bool didParseNoDeref() const { return parsedNoDeref; } ~TypeProcessingState() { - if (trivial) return; + if (savedAttrs.empty()) + return; - restoreDeclSpecAttrs(); + getMutableDeclSpec().getAttributes().clearListOnly(); + for (ParsedAttr *AL : savedAttrs) + getMutableDeclSpec().getAttributes().addAtEnd(AL); } private: DeclSpec &getMutableDeclSpec() const { return const_cast<DeclSpec&>(declarator.getDeclSpec()); } - - void restoreDeclSpecAttrs() { - assert(hasSavedAttrs); - - getMutableDeclSpec().getAttributes().clearListOnly(); - for (ParsedAttr *AL : savedAttrs) - getMutableDeclSpec().getAttributes().addAtEnd(AL); - } }; } // end anonymous namespace _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits