[llvm-commits] [llvm] r41192 - /llvm/trunk/include/llvm/Support/PassNameParser.h
Tanya Lattner
lattner at apple.com
Mon Aug 20 14:18:41 PDT 2007
These are good comments, but could you use the doxygen style comments
"///" so that it will show up in doxygen?
Thanks,
Tanya
On Aug 20, 2007, at 12:54 PM, David Greene wrote:
> Author: greened
> Date: Mon Aug 20 14:54:01 2007
> New Revision: 41192
>
> URL: http://llvm.org/viewvc/llvm-project?rev=41192&view=rev
> Log:
>
> Add FilteredPassNameParser along with PassArgFilter to filter passes
> based on their Arg members.
>
>
>
> Modified:
> llvm/trunk/include/llvm/Support/PassNameParser.h
>
> Modified: llvm/trunk/include/llvm/Support/PassNameParser.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/
> Support/PassNameParser.h?rev=41192&r1=41191&r2=41192&view=diff
>
> ======================================================================
> ========
> --- llvm/trunk/include/llvm/Support/PassNameParser.h (original)
> +++ llvm/trunk/include/llvm/Support/PassNameParser.h Mon Aug 20
> 14:54:01 2007
> @@ -24,9 +24,9 @@
> #define LLVM_SUPPORT_PASS_NAME_PARSER_H
>
> #include "llvm/Support/CommandLine.h"
> -#include "llvm/Support/Debug.h"
> #include "llvm/Pass.h"
> #include <algorithm>
> +#include <cstring>
>
> namespace llvm {
>
> @@ -89,6 +89,44 @@
> }
> };
>
> -} // End llvm namespace
> +//
> ===-------------------------------------------------------------------
> ---===//
> +// FilteredPassNameParser class - Make use of the pass registration
> +// mechanism to automatically add a command line argument to opt for
> +// each pass that satisfies a filter criteria. Filter should return
> +// true for passes to be registered as command-line options.
> +//
> +template<typename Filter>
> +class FilteredPassNameParser : public PassNameParser {
> +private:
> + Filter filter;
>
> +public:
> + bool ignorablePassImpl(const PassInfo *P) const { return !filter
> (*P); }
> +};
> +
> +//
> ===-------------------------------------------------------------------
> ---===//
> +// PassArgFilter - A filter for use with PassNameFilterParser that
> only
> +// accepts a Pass whose Arg matches certain strings.
> +//
> +// Use like this:
> +//
> +// extern const char AllowedPassArgs[] = "-anders_aa -dse";
> +//
> +// static cl::list<
> +// const PassInfo*,
> +// bool,
> +// FilteredPassNameParser<PassArgFilter<AllowedPassArgs> > >
> +// PassList(cl::desc("LLVM optimizations available:"));
> +//
> +// Only the -anders_aa and -dse options will be available to the
> user.
> +//
> +template<const char *Args>
> +class PassArgFilter {
> +public:
> + bool operator()(const PassInfo &P) const {
> + return(std::strstr(Args, P.getPassArgument()));
> + }
> +};
> +
> +} // End llvm namespace
> #endif
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list