Add loop unroll pragma support

http://reviews.llvm.org/D4089

Patch by Mark Heffernan.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210667 91177308-0d34-0410-b5e6-96231b3b80d8
Move a few classes to be before TypoCorrectionConsumer.

This is in preparation for moving TypoCorrection filtering
into the TypoCorrectionConsumer, to separate out some of the purely
mechanical churn. It also makes some of the method names in
NamespaceSpecifierSet be more style guide compliant.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210668 91177308-0d34-0410-b5e6-96231b3b80d8
Move TypoCorrection filtering into the TypoCorrectionConsumer and make it incremental.

The only external/visible functional change that fell out of this
refactoring is that there was one less case where the typo caching
and/or counting didn't work properly. The result is that a test case
had to be moved from typo-correction.cpp to typo-correction-pt2.cpp
to avoid the hard-coded limit on per file/TU typo correction attempts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210669 91177308-0d34-0410-b5e6-96231b3b80d8
Clean up the TypoCorrectionConsumer's interface a bit.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210670 91177308-0d34-0410-b5e6-96231b3b80d8
Make a couple of helper classes private to TypoCorrectionConsumer.

The SpecifierInfo and NamespaceSpecifierSet are now only used by
TypoCorrectionConsumer, so treat them as the implementation details of
TypoCorrectionConsumer that they are. Also make NamespaceSpecifierSet's
method names more style guide compliant.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210671 91177308-0d34-0410-b5e6-96231b3b80d8
Sink SpecifierInfo into the only class that uses it.

SpecifierInfo is not used outside of NamespaceSpecifierSet except
indirectly through NamespaceSpecifierSet's iterator, so clean up the
code a bit by moving SpecifierInfo into NamespaceSpecifierSet. Also drop
SpecifierInfo's trivial yet verbose constructor since brace
initiialization is sufficient in the only two places the constructor was
being explicitly called.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210672 91177308-0d34-0410-b5e6-96231b3b80d8
Add some comments to TypoCorrectionConsumer.

Also move the constructor for NamespaceSpecifierSet out of line to
improve the class' readability. I meant to do these two things while
cleaning up the previous TypoCorrectionConsumer changes and have them
folded into those changes.

No functionality changed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210686 91177308-0d34-0410-b5e6-96231b3b80d8