[llvm] r187732 - Introduce an optimisation for special case lists with large numbers of literal entries.

Sean Silva silvas at purdue.edu
Mon Aug 5 12:31:09 PDT 2013


On Mon, Aug 5, 2013 at 10:48 AM, Peter Collingbourne <peter at pcc.me.uk>wrote:

> Author: pcc
> Date: Mon Aug  5 12:48:04 2013
> New Revision: 187732
>
> URL: http://llvm.org/viewvc/llvm-project?rev=187732&view=rev
> Log:
> Introduce an optimisation for special case lists with large numbers of
> literal entries.
>
> Our internal regex implementation does not cope with large numbers
> of anchors very efficiently.  Given a ~3600-entry special case list,
> regex compilation can take on the order of seconds.  This patch solves
> the problem for the special case of patterns matching literal global
> names (i.e. patterns with no regex metacharacters).  Rather than
> forming regexes from literal global name patterns, add them to
> a StringSet which is checked before matching against the regex.
> This reduces regex compilation time by an order of roughly thousands
> when reading the aforementioned special case list, according to a
> completely unscientific study.
>
> No test cases.  I figure that any new tests for this code should
> check that regex metacharacters are properly recognised.  However,
> I could not find any documentation which documents the fact that the
> syntax of global names in special case lists is based on regexes.
>

The header comment in `include/llvm/Transforms/Utils/SpecialCaseList.h`
says:

```
// Note that the wild card is in fact an llvm::Regex, but * is automatically
// replaced with .*
```


> The extent to which regex syntax is supported in special case lists
> should probably be decided on/documented before writing tests.
>

<http://llvm-reviews.chandlerc.com/D1268> is working towards getting things
documented. Since I presume this feature is already being used in the wild,
we probably need to maintain the current format.

-- Sean Silva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130805/a1001ba9/attachment.html>


More information about the llvm-commits mailing list