r217586 - Avoid some unnecessary SmallVector copies.

David Blaikie dblaikie at gmail.com
Thu Sep 11 09:04:40 PDT 2014


On Thu, Sep 11, 2014 at 7:13 AM, Benjamin Kramer <benny.kra at googlemail.com>
wrote:

> Author: d0k
> Date: Thu Sep 11 09:13:49 2014
> New Revision: 217586
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217586&view=rev
> Log:
> Avoid some unnecessary SmallVector copies.
>

What technique did you use to find these cases?


>
> No functionality change.
>
> Modified:
>     cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h
>     cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
>     cfe/trunk/lib/Driver/Driver.cpp
>     cfe/trunk/lib/Driver/Tools.cpp
>     cfe/trunk/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
>
> Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h?rev=217586&r1=217585&r2=217586&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h (original)
> +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchFinder.h Thu Sep 11
> 09:13:49 2014
> @@ -253,7 +253,7 @@ match(MatcherT Matcher, const ast_type_t
>    MatchFinder Finder;
>    Finder.addMatcher(Matcher, &Callback);
>    Finder.match(Node, Context);
> -  return Callback.Nodes;
> +  return std::move(Callback.Nodes);
>  }
>
>  template <typename MatcherT, typename NodeT>
>
> Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=217586&r1=217585&r2=217586&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original)
> +++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Thu Sep 11 09:13:49 2014
> @@ -1162,7 +1162,7 @@ void MicrosoftCXXABI::EmitDestructorCall
>  void MicrosoftCXXABI::emitVTableDefinitions(CodeGenVTables &CGVT,
>                                              const CXXRecordDecl *RD) {
>    MicrosoftVTableContext &VFTContext = CGM.getMicrosoftVTableContext();
> -  VPtrInfoVector VFPtrs = VFTContext.getVFPtrOffsets(RD);
> +  const VPtrInfoVector &VFPtrs = VFTContext.getVFPtrOffsets(RD);
>
>    for (VPtrInfo *Info : VFPtrs) {
>      llvm::GlobalVariable *VTable = getAddrOfVTable(RD,
> Info->FullOffsetInMDC);
>
> Modified: cfe/trunk/lib/Driver/Driver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=217586&r1=217585&r2=217586&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/Driver.cpp (original)
> +++ cfe/trunk/lib/Driver/Driver.cpp Thu Sep 11 09:13:49 2014
> @@ -518,7 +518,7 @@ void Driver::generateCompilationDiagnost
>        << "\n********************\n\n"
>        "PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:\n"
>        "Preprocessed source(s) and associated run script(s) are located
> at:";
> -    ArgStringList Files = C.getTempFiles();
> +    const ArgStringList &Files = C.getTempFiles();
>      for (ArgStringList::const_iterator it = Files.begin(), ie =
> Files.end();
>           it != ie; ++it) {
>        Diag(clang::diag::note_drv_command_failed_diag_msg) << *it;
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=217586&r1=217585&r2=217586&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Thu Sep 11 09:13:49 2014
> @@ -6599,7 +6599,7 @@ void freebsd::Link::ConstructJob(Compila
>    }
>
>    Args.AddAllArgs(CmdArgs, options::OPT_L);
> -  const ToolChain::path_list Paths = ToolChain.getFilePaths();
> +  const ToolChain::path_list &Paths = ToolChain.getFilePaths();
>    for (const auto &Path : Paths)
>      CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
>    Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
> @@ -7425,7 +7425,7 @@ void gnutools::Link::ConstructJob(Compil
>    Args.AddAllArgs(CmdArgs, options::OPT_L);
>    Args.AddAllArgs(CmdArgs, options::OPT_u);
>
> -  const ToolChain::path_list Paths = ToolChain.getFilePaths();
> +  const ToolChain::path_list &Paths = ToolChain.getFilePaths();
>
>    for (const auto &Path : Paths)
>      CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp?rev=217586&r1=217585&r2=217586&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp
> (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/SimpleStreamChecker.cpp Thu Sep
> 11 09:13:49 2014
> @@ -63,8 +63,7 @@ class SimpleStreamChecker : public Check
>                           const CallEvent &Call,
>                           CheckerContext &C) const;
>
> -  void reportLeaks(SymbolVector LeakedStreams,
> -                   CheckerContext &C,
> +  void reportLeaks(ArrayRef<SymbolRef> LeakedStreams, CheckerContext &C,
>                     ExplodedNode *ErrNode) const;
>
>    bool guaranteedNotToCloseFile(const CallEvent &Call) const;
> @@ -222,16 +221,15 @@ void SimpleStreamChecker::reportDoubleCl
>    C.emitReport(R);
>  }
>
> -void SimpleStreamChecker::reportLeaks(SymbolVector LeakedStreams,
> -                                               CheckerContext &C,
> -                                               ExplodedNode *ErrNode)
> const {
> +void SimpleStreamChecker::reportLeaks(ArrayRef<SymbolRef> LeakedStreams,
> +                                      CheckerContext &C,
> +                                      ExplodedNode *ErrNode) const {
>    // Attach bug reports to the leak node.
>    // TODO: Identify the leaked file descriptor.
> -  for (SmallVectorImpl<SymbolRef>::iterator
> -         I = LeakedStreams.begin(), E = LeakedStreams.end(); I != E; ++I)
> {
> +  for (SymbolRef LeakedStream : LeakedStreams) {
>      BugReport *R = new BugReport(*LeakBugType,
>          "Opened file is never closed; potential resource leak", ErrNode);
> -    R->markInteresting(*I);
> +    R->markInteresting(LeakedStream);
>      C.emitReport(R);
>    }
>  }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140911/4f1a750d/attachment.html>


More information about the cfe-commits mailing list