clang-format: Improve formatting of ObjC dict literals.

Before:
  NSDictionary *d = @{ @"nam" : NSUserNam(), @"dte" : [NSDate date],
                       @"processInfo" : [NSProcessInfo processInfo]
  };

After:
  NSDictionary *d = @{
    @"nam" : NSUserNam(),
    @"dte" : [NSDate date],
    @"processInfo" : [NSProcessInfo processInfo]
  };

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193049 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Support case ranges.

Before (note the missing space before "..." which can lead to compile
errors):
  switch (x) {
    case 'A'... 'Z':
    case 1... 5:
        break;
  }

After:
  switch (x) {
    case 'A' ... 'Z':
    case 1 ... 5:
        break;
  }

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193050 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Fix formatting of nested blocks after comment.

Before:
  DEBUG({ // Comment that used to confuse clang-format.
  fdafas();
  });
Before:
  DEBUG({ // Comments are now fine.
    fdafas();
  });

This fixed llvm.org/PR17619.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193051 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Better understand Lambda poarameters.

Before:
  auto PointerBinding = [](const char * S) {};

After:
  auto PointerBinding = [](const char *S) {};

This fixes llvm.org/PR17618.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193054 91177308-0d34-0410-b5e6-96231b3b80d8
Fix crash in cleanup attr handling

ResolveSingleFunctionTemplateSpecialization() returns 0 and doesn't emit diags
unless the expression has template-ids, so we must null check the result.

Also add a better diag noting which overloads are causing the problem.

Reviewed by Aaron Ballman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193055 91177308-0d34-0410-b5e6-96231b3b80d8
Switch attribute test line endings from CRLF

The convention is LF unless specifically testing line endings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193056 91177308-0d34-0410-b5e6-96231b3b80d8
Revert r193022 and r193048.  They broke the ubsan test suite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193057 91177308-0d34-0410-b5e6-96231b3b80d8
Implement function type checker for the undefined behavior sanitizer.

This uses function prefix data to store function type information at the
function pointer.

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193058 91177308-0d34-0410-b5e6-96231b3b80d8
Be more precise when diagnosing 'inline' on global replacement functions


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193061 91177308-0d34-0410-b5e6-96231b3b80d8
Sema: Explain our deviation from the standard by referencing the, now open, LWG issue.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193062 91177308-0d34-0410-b5e6-96231b3b80d8
[-fms-extensions] __is_interface_class was miscategorized

We claimed that the __is_interface_class keyword was KEYCXX even though
the __interface keyword was KEYMS.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193065 91177308-0d34-0410-b5e6-96231b3b80d8
Lex: Don't restrict legal UCNs when preprocessing assembly

The C and C++ standards disallow using universal character names to
refer to some characters, such as basic ascii and control characters,
so we reject these sequences in the lexer. However, when the
preprocessor isn't being used on C or C++, it doesn't make sense to
apply these restrictions.

Notably, accepting these characters avoids issues with unicode escapes
when GHC uses the compiler as a preprocessor on haskell sources.

Fixes rdar://problem/14742289

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193067 91177308-0d34-0410-b5e6-96231b3b80d8
Expose -fmodule-name and -fmodule-map-file as driver options.

Review: http://llvm-reviews.chandlerc.com/D1974

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193069 91177308-0d34-0410-b5e6-96231b3b80d8
Fixes PR17617: Crash on joining short if statements.

Now that we iterate on the formatting multiple times when we
have chains of preprocessor branches, we need to correctly reset
the token's previous and next pointer for the first / last token.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193071 91177308-0d34-0410-b5e6-96231b3b80d8
Fix to PR8880 (clang dies processing a for loop).

Due to statement expressions supported as GCC extension, it is possible
to put 'break' or 'continue' into a loop/switch statement but outside its
body, for example:

    for ( ; ({ if (first) { first = 0; continue; } 0; }); )

Such usage must be diagnosed as an error, GCC rejects it. To recognize
this and similar patterns the flags BreakScope and ContinueScope are
temporarily turned off while parsing condition expression.

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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193073 91177308-0d34-0410-b5e6-96231b3b80d8
Add the __ARM_ARCH_EXT_IDIV__ predefine. It is set to 1 if we have hardware divide in the mode that we are compiling in (depending on the target features), not defined if we don't. Should be compatible with the GCC conterpart. Also adding a -hwdiv option to overide the default behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193074 91177308-0d34-0410-b5e6-96231b3b80d8
Set the default hardware division features for ARM cpus. Also set it as default for A32 armv8.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193075 91177308-0d34-0410-b5e6-96231b3b80d8
[mips][msa] Fix definition of SLD instruction.

The second parameter of the SLD intrinsic is the number of columns (GPR) to 
slide left the source array.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193076 91177308-0d34-0410-b5e6-96231b3b80d8
Driver: Various string-related cleanups.

Also fixes some funky formatting.

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