Introduce Regex::isLiteralERE function.

This will be used to implement an optimisation for literal entries
in special case lists.

Differential Revision: http://llvm-reviews.chandlerc.com/D1278

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187731 91177308-0d34-0410-b5e6-96231b3b80d8
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 extent to which regex syntax is supported in special case lists
should probably be decided on/documented before writing tests.

Differential Revision: http://llvm-reviews.chandlerc.com/D1150

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187732 91177308-0d34-0410-b5e6-96231b3b80d8
Fix assertion failure when ptrtoint int size is larger

When the int was larger than the pointer size, the saved constant
offset would be the wrong type at the uses, resulting in this failure.

In the added test case for example, the sub i64 ended up with
i32 operands, which would then fail on its use in the icmp.
XXX - Missing C++ comment in header, goes over col limit
Run load-icmp with datalayout. There are paths not tested now
it is supposed to test
Remove seemingly dead InstCombine compare code

Add some more tests to try to break it. These paths weren't tested
with a datalayout. This checks if it needs to cast GEP indices,
but at this point they should have already been converted to the
pointer sized integer.