Eliminate redundant MangleBuffer class

The only remaining user didn't actually use the non-dynamic storage facility
this class provides.

The std::string is transitional and likely to be StringRefized shortly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210058 91177308-0d34-0410-b5e6-96231b3b80d8
Fix -emit-codegen-only to not generate binaries

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210059 91177308-0d34-0410-b5e6-96231b3b80d8
Update for llvm API change.

Aliases in llvm now hold an arbitrary expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210063 91177308-0d34-0410-b5e6-96231b3b80d8
Move DR532 test where it belongs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210064 91177308-0d34-0410-b5e6-96231b3b80d8
Don't assume an implicit IntrusiveRefCntPtr -> bool operator.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210075 91177308-0d34-0410-b5e6-96231b3b80d8
When emitting a multidimensional array new, emit the initializers for the
trailing elements as a single loop, rather than sometimes emitting a nest of
several loops. This fixes a bug where CodeGen would sometimes try to emit an
expression with the wrong type for the element being initialized. Plus various
other minor cleanups to the IR produced for array new initialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210079 91177308-0d34-0410-b5e6-96231b3b80d8
List DR532 as implemented on the defect report status page by renaming the namespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210080 91177308-0d34-0410-b5e6-96231b3b80d8
PR11410: Extend diagnostic to cover all cases of aggregate initialization, not
just the extremely specific case of a trailing array element that couldn't be
initialized because the default constructor for the element type is deleted.

Also reword the diagnostic to better match our other context diagnostics and to
prepare for the implementation of core issue 1070.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210083 91177308-0d34-0410-b5e6-96231b3b80d8
Teach AST dumper to dump the array filler in an initializer list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210090 91177308-0d34-0410-b5e6-96231b3b80d8
Implement DR990 and DR1070. Aggregate initialization initializes uninitialized
elements from {}, rather than value-initializing them. This permits calling an
initializer-list constructor or constructing a std::initializer_list object.
(It would also permit initializing a const reference or rvalue reference if
that weren't explicitly prohibited by other rules.)


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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210092 91177308-0d34-0410-b5e6-96231b3b80d8
[OPENMP] Loop canonical form analysis (Sema)

This patch implements semantic analysis to make sure that the loop is in OpenMP canonical form.
This is the form required for 'omp simd', 'omp for' and other loop pragmas.

Differential revision: http://reviews.llvm.org/D3778



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210095 91177308-0d34-0410-b5e6-96231b3b80d8
temporary disable part of a test because it causes clang to leak memory (want to have the sanitizer bot green)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210096 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Refactor indentation behavior for multiple nested blocks.

This fixes a few oddities when formatting multiple nested JavaScript
blocks, e.g.:

Before:
  promise.then(
      function success() {
        doFoo();
        doBar();
      },
      [], function error() {
        doFoo();
        doBaz();
      });
  promise.then([],
               function success() {
                 doFoo();
                 doBar();
               },
               function error() {
    doFoo();
    doBaz();
  });

After:
  promise.then(
      function success() {
        doFoo();
        doBar();
      },
      [],
      function error() {
        doFoo();
        doBaz();
      });
  promise.then([],
               function success() {
                 doFoo();
                 doBar();
               },
               function error() {
                 doFoo();
                 doBaz();
               });

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210097 91177308-0d34-0410-b5e6-96231b3b80d8
Use IntrusiveRefCntPtr's == and != nullptr operators.

This is a partial revert of r210075.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210101 91177308-0d34-0410-b5e6-96231b3b80d8
Fix leak from r210059

Also revert r210096 which temporarily disabled the test while this was being
investigated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210115 91177308-0d34-0410-b5e6-96231b3b80d8
Update DR page for latest revision of CWG issues list.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210130 91177308-0d34-0410-b5e6-96231b3b80d8
Add __builtin_operator_new and __builtin_operator_delete, which act like calls
to the normal non-placement ::operator new and ::operator delete, but allow
optimizations like new-expressions and delete-expressions do.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210137 91177308-0d34-0410-b5e6-96231b3b80d8
Downgrade "definition of dllimport static field" error to warning for class templates (PR19902)

This allows us to compile the following kind of code, which occurs in MSVC
headers:

  template <typename> struct S {
    __declspec(dllimport) static int x;
  };
  template <typename T> int S<T>::x;

The definition works similarly to a dllimport inline function definition and
gets available_externally linkage.

Differential Revision: http://reviews.llvm.org/D3998

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210141 91177308-0d34-0410-b5e6-96231b3b80d8
Remove the last remaining llvm/Config/config.h includes

This corrects long-standing misuses of LLVM's internal config.h.

In most cases the public llvm-config.h header was intended and we can now
remove the old hacks thanks to LLVM r210144.

The config.h header is private, won't be installed and should no longer be
included by clang or other modules.

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