]> granicus.if.org Git - clang/log
clang
9 years agoSwitch test from wchar_t to char32_t
David Majnemer [Sun, 5 Apr 2015 05:42:02 +0000 (05:42 +0000)]
Switch test from wchar_t to char32_t

Windows has a 16-bit wchar_t, most Unix platforms have a 32-bit wchar_t.
Use a char32_t to keep the test's output stable.

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

9 years ago[AST] String literal operator templates have two template args, not one
David Majnemer [Sun, 5 Apr 2015 05:32:54 +0000 (05:32 +0000)]
[AST] String literal operator templates have two template args, not one

StmtPrinter assumed that the first template arg was the pack and
attempted to iterate it.  However, the GNU extension (which is really
just N3599), has two template arguments.  In this case, the second
argument is the pack containing the string contents.

Handle this by desugaring the call to the explicit operator.

For example:
"qux" _zombocom will be shown as
operator "" _zombocom<char, 'q', 'u', 'x'>() in diagnostics and AST
dumps.

N.B.  It is actually impossible to render the arguments back to the
source form without storing more information in the AST.  For example,
we cannot tell if the user wrote u8"qux" or "qux".  We also lose
fidelity when it comes to non-char types for this exact reason (e.g. it
is hard to render a list of wchar_t back to something that can be
printed to the screen even if you don't have to consider surrogate
pairs).

This fixes PR23120.

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

9 years ago[opaque pointer type] More GEP API migrations
David Blaikie [Sat, 4 Apr 2015 21:07:17 +0000 (21:07 +0000)]
[opaque pointer type] More GEP API migrations

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

9 years agoRevert "Revert "Revert "Don't use unique section names by default if using the integr...
Rafael Espindola [Sat, 4 Apr 2015 19:32:41 +0000 (19:32 +0000)]
Revert "Revert "Revert "Don't use unique section names by default if using the integrated as."""

This reverts commit r234101. I will debug what went wrong with ARM.

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

9 years agoRevert "Revert "Don't use unique section names by default if using the integrated...
Rafael Espindola [Sat, 4 Apr 2015 18:21:14 +0000 (18:21 +0000)]
Revert "Revert "Don't use unique section names by default if using the integrated as.""

This reverts commit r233398, bringing back 233393 now that LLVM is fixed.

Original message:

Don't use unique section names by default if using the integrated as.

This saves some IO and ccache space by not creating long section names. It
should work with every ELF linker.

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

9 years ago[opaque pointer type] more GEP API migrations
David Blaikie [Sat, 4 Apr 2015 15:12:29 +0000 (15:12 +0000)]
[opaque pointer type] more GEP API migrations

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

9 years agoRemove the cl-no-signed-zeros cc1 option
Sanjay Patel [Sat, 4 Apr 2015 14:54:24 +0000 (14:54 +0000)]
Remove the cl-no-signed-zeros cc1 option

Use the driver flag -fno-signed-zeros instead.

This was recommended but not implemented in D6873:
http://reviews.llvm.org/D6873

which was checked in at r226915:
http://reviews.llvm.org/rL226915

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

9 years agoclang-format: [JS] Understand object literals with only methods.
Daniel Jasper [Sat, 4 Apr 2015 07:56:55 +0000 (07:56 +0000)]
clang-format: [JS] Understand object literals with only methods.

Before:
  let theObject = {someMethodName() {
    doTheThing();
    doTheOtherThing();
  },
                   someOtherMethodName() {
                     doSomething();
                     doSomethingElse();
                   }};

After:
  let theObject = {
    someMethodName() {
      doTheThing();
      doTheOtherThing();
    },
    someOtherMethodName() {
      doSomething();
      doSomethingElse();
    }
  };

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

9 years ago[MS ABI] A pointer-to-function cannot be caught as a pointer-to-void
David Majnemer [Sat, 4 Apr 2015 05:37:48 +0000 (05:37 +0000)]
[MS ABI] A pointer-to-function cannot be caught as a pointer-to-void

Don't assume that all pointers are convertible to void pointer.
Instead correctly respect [conv.ptr]p2; only allow pointer types with an
object pointee type to be caught as pointer-to-void.

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

9 years agoComplete comment. Reflow conditional.
Eric Christopher [Sat, 4 Apr 2015 03:34:43 +0000 (03:34 +0000)]
Complete comment. Reflow conditional.

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

9 years ago[opaque pointer type] Explicitly specify some types for GEP
David Blaikie [Fri, 3 Apr 2015 22:54:16 +0000 (22:54 +0000)]
[opaque pointer type] Explicitly specify some types for GEP

Not all of them (there's still a fallback for this specific function
that omits the type parameter) but it's some I bothered to do now.

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

9 years agoclang-format: [Proto] No alternate operator names.
Daniel Jasper [Fri, 3 Apr 2015 21:15:46 +0000 (21:15 +0000)]
clang-format: [Proto] No alternate operator names.

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

9 years ago[i386 ABI] expand small C like structs in C++, just like how we handle small
Manman Ren [Fri, 3 Apr 2015 18:10:29 +0000 (18:10 +0000)]
[i386 ABI] expand small C like structs in C++, just like how we handle small
C structs.

This comes up when we have a function that takes a struct and is defined in a
C++ file and used in a C file.

Before this commit, we will generate byval for C++ and will expand the struct
for C, thus causing difference at IR level. We will use bitcast of function type
at the callsite, which causes the inliner to not inline the function.

This commit changes how we handle small C like structs at IR level, but at
backend, we should generate the same argument passing before and after the
commit.

Note that the condition for expanding is still over conservative. We should be
able to expand type that is spelled with “class” and types that are not C-like.
But this commit fixes the inconsistent argument passing between C/C++.

Reviewed by John.

rdar://20121030

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

9 years ago[opaque pointer type] Explicitly specify type to CreateGEP
David Blaikie [Fri, 3 Apr 2015 17:47:16 +0000 (17:47 +0000)]
[opaque pointer type] Explicitly specify type to CreateGEP

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

9 years agoMake this test not rely on a backend being registered.
Eric Christopher [Fri, 3 Apr 2015 01:27:02 +0000 (01:27 +0000)]
Make this test not rely on a backend being registered.

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

9 years agoAdded support for attributed types to the ASTImporter.
Sean Callanan [Thu, 2 Apr 2015 23:50:08 +0000 (23:50 +0000)]
Added support for attributed types to the ASTImporter.

<rdar://problem/20403544>

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

9 years agoAdd a question mark to the end of an interrogatory warning.
Eric Christopher [Thu, 2 Apr 2015 22:30:23 +0000 (22:30 +0000)]
Add a question mark to the end of an interrogatory warning.

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

9 years agoUnify warnings/errors from "maybe you meant" to "did you mean".
Eric Christopher [Thu, 2 Apr 2015 22:10:06 +0000 (22:10 +0000)]
Unify warnings/errors from "maybe you meant" to "did you mean".

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

9 years agoCorrect typos in SEH filter expressions
Reid Kleckner [Thu, 2 Apr 2015 22:09:32 +0000 (22:09 +0000)]
Correct typos in SEH filter expressions

Otherwise we assert due to uncorrected delayed typos.

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

9 years ago[Objective-C SDK modernizer]. Patch to convert setter/getter
Fariborz Jahanian [Thu, 2 Apr 2015 21:36:03 +0000 (21:36 +0000)]
[Objective-C SDK modernizer]. Patch to convert setter/getter
methods in protocols to their respective property
declarations. rdar://19372798

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

9 years ago[opaque pointer type] Update for GEP API changes in LLVM
David Blaikie [Thu, 2 Apr 2015 18:55:21 +0000 (18:55 +0000)]
[opaque pointer type] Update for GEP API changes in LLVM

Now the GEP constant utility functions require the type to be explicitly
passed (since eventually the pointer type will be opaque and not convey
the required type information). For now callers can still pass nullptr
(though none were needed here in Clang, which is nice) if
convenienc/necessary, but eventually that will be disallowed as well.

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

9 years ago[AST] Shrink the Stmt hierarchy with LLVM_PTR_SIZE for MSVC 2013
Reid Kleckner [Thu, 2 Apr 2015 18:02:39 +0000 (18:02 +0000)]
[AST] Shrink the Stmt hierarchy with LLVM_PTR_SIZE for MSVC 2013

Follow-up to r233921 that removes the 'void *Aligner' Stmt union member
for MSVC 2013.

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

9 years agoLower the default alignment on ASTContext's operator new.
Benjamin Kramer [Thu, 2 Apr 2015 16:19:54 +0000 (16:19 +0000)]
Lower the default alignment on ASTContext's operator new.

It was documented as 8 and operator new[] defaults to 8, but the normal
operator new was never updated and happily wasted bytes on every other
allocation.

We still have to allocate all Types with 16 byte alignment, update the
allocation calls for Types that were missing explicit alignment.

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

9 years ago[ast] Put the Stmt hierarchy on a diet for 64 bit targets.
Benjamin Kramer [Thu, 2 Apr 2015 15:29:07 +0000 (15:29 +0000)]
[ast] Put the Stmt hierarchy on a diet for 64 bit targets.

Previously we would waste 32 bits on alignment, use LLVM_ALIGNAS to
free that space for derived classes an place. Sadly still have to #ifdef
out MSVC 2013 because it can't align based on a sizeof expr.

No intended functionality change. New byte counts:
sizeof(before) | sizeof(after)

LabelStmt: 32 | LabelStmt: 24
SwitchStmt: 48 | SwitchStmt: 40
WhileStmt: 40 | WhileStmt: 32
DoStmt: 40 | DoStmt: 32
ForStmt: 64 | ForStmt: 56
ContinueStmt: 16 | ContinueStmt: 8
BreakStmt: 16 | BreakStmt: 8
ReturnStmt: 32 | ReturnStmt: 24
AsmStmt: 40 | AsmStmt: 32
GCCAsmStmt: 80 | GCCAsmStmt: 72
MSAsmStmt: 96 | MSAsmStmt: 88
SEHExceptStmt: 32 | SEHExceptStmt: 24
SEHFinallyStmt: 24 | SEHFinallyStmt: 16
SEHLeaveStmt: 16 | SEHLeaveStmt: 8
CapturedStmt: 32 | CapturedStmt: 24
CXXCatchStmt: 32 | CXXCatchStmt: 24
CXXForRangeStmt: 72 | CXXForRangeStmt: 64
ObjCAtFinallyStmt: 24 | ObjCAtFinallyStmt: 16
ObjCAtSynchronizedStmt: 32 | ObjCAtSynchronizedStmt: 24
ObjCAtThrowStmt: 24 | ObjCAtThrowStmt: 16
ObjCAutoreleasePoolStmt: 24 | ObjCAutoreleasePoolStmt: 16

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

9 years ago[utils] Add Check Compile Flow Consistency tool (check_cfc.py).
Russell Gallop [Thu, 2 Apr 2015 15:01:53 +0000 (15:01 +0000)]
[utils] Add Check Compile Flow Consistency tool (check_cfc.py).

This is a tool for checking consistency of code generation with different
compiler options (such as -g or outputting to .s). This tool has found a number
of code generation issues. The script acts as a wrapper to clang or clang++
performing 2 (or more) compiles then comparing the object files. Instructions
for use are in check_cfc.py including how to use with LNT.

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

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

9 years ago[OPENMP] Fix crash on private variables not used in OpenMP region in templates.
Alexey Bataev [Thu, 2 Apr 2015 13:07:08 +0000 (13:07 +0000)]
[OPENMP] Fix crash on private variables not used in OpenMP region in templates.

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

9 years agoPartially revert "Replace custom alignment enforcement with LLVM_ALIGNAS."
Benjamin Kramer [Thu, 2 Apr 2015 12:43:31 +0000 (12:43 +0000)]
Partially revert "Replace custom alignment enforcement with LLVM_ALIGNAS."

MSVC 2013 can't even parse __declspec(align(sizeof(foo))). We'll have to
wait until MSVC 2015 for this.

This partially reverts commit r233911.

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

9 years agoReplace custom alignment enforcement with LLVM_ALIGNAS.
Benjamin Kramer [Thu, 2 Apr 2015 12:25:07 +0000 (12:25 +0000)]
Replace custom alignment enforcement with LLVM_ALIGNAS.

This isn't perfect as it still assumes sizeof(void*) == alignof(void*),
but we can fix that when compiler support gets better.

Shrinks some Stmts that happen to inherit from Stmt and have a
SourceLocation as the first member (64 bit archs only).

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

9 years ago[OPENMP] Fix crash on private variables not used in OpenMP region.
Alexey Bataev [Thu, 2 Apr 2015 07:48:16 +0000 (07:48 +0000)]
[OPENMP] Fix crash on private variables not used in OpenMP region.

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

9 years agoImplement CFI type checks for non-virtual calls.
Peter Collingbourne [Thu, 2 Apr 2015 00:23:30 +0000 (00:23 +0000)]
Implement CFI type checks for non-virtual calls.

This uses the same class metadata currently used for virtual call and
cast checks.

The new flag is -fsanitize=cfi-nvcall. For consistency, the -fsanitize=cfi-vptr
flag has been renamed -fsanitize=cfi-vcall.

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

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

9 years agoAdd test intended for commit in r231317
Reid Kleckner [Wed, 1 Apr 2015 23:32:03 +0000 (23:32 +0000)]
Add test intended for commit in r231317

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

9 years ago[UBSan] Embed UBSan into ASan runtime (Clang part).
Alexey Samsonov [Wed, 1 Apr 2015 22:42:25 +0000 (22:42 +0000)]
[UBSan] Embed UBSan into ASan runtime (Clang part).

Summary:
Change the way we use ASan and UBSan together. Instead of keeping two
separate runtimes (libclang_rt.asan and libclang_rt.ubsan), embed UBSan
into ASan and get rid of libclang_rt.ubsan. If UBSan is not supported on
a platform, all UBSan sources are just compiled into dummy empty object
files. UBSan initialization code (e.g. flag parsing) is directly called
from ASan initialization, so we are able to enforce correct
initialization order.

This mirrors the approach we already use for ASan+LSan. This change doesn't
modify the way we use standalone UBSan.

Test Plan: regression test suite

Reviewers: kubabrecka, zaks.anna, kcc, rsmith

Subscribers: cfe-commits

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

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

9 years agoSet the type of ptrdiff_t to signed on NVPTX targets
Eli Bendersky [Wed, 1 Apr 2015 20:29:18 +0000 (20:29 +0000)]
Set the type of ptrdiff_t to signed on NVPTX targets

It was unsigned before, which is unlike any other target and also doesn't make
much sense.

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

9 years agoRe-land "MS ABI: lambda call operators are instance methods and should use thiscall"
Reid Kleckner [Wed, 1 Apr 2015 20:22:13 +0000 (20:22 +0000)]
Re-land "MS ABI: lambda call operators are instance methods and should use thiscall"

Update the test cases to pass when lambda call operators use thiscall.

Update the lambda-to-block conversion operator to use the default free
function calling convention instead of the call operator's convention.

This reverts commit r233082 and re-instates r233023.

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

9 years agoRun dos2unix on test/PCH/cxx1y-lambdas.mm
Reid Kleckner [Wed, 1 Apr 2015 20:21:34 +0000 (20:21 +0000)]
Run dos2unix on test/PCH/cxx1y-lambdas.mm

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

9 years agoMinor simplification: do typo-correction before handling inheriting
Richard Smith [Wed, 1 Apr 2015 19:31:06 +0000 (19:31 +0000)]
Minor simplification: do typo-correction before handling inheriting
constructors, instead of having the typo-correction code also dispatch to the
inheriting constructor special case.

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

9 years agoSet NVPTX64 target's size_t to match other 64-bit targets
Eli Bendersky [Wed, 1 Apr 2015 18:29:27 +0000 (18:29 +0000)]
Set NVPTX64 target's size_t to match other 64-bit targets

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

9 years agoFix inlinehint.cpp with an explicit triple to avoid x86_thiscallcc problems
Reid Kleckner [Wed, 1 Apr 2015 16:48:54 +0000 (16:48 +0000)]
Fix inlinehint.cpp with an explicit triple to avoid x86_thiscallcc problems

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

9 years agoRemove comdats from inlinehint.cpp to pass test on Darwin
Reid Kleckner [Wed, 1 Apr 2015 16:45:17 +0000 (16:45 +0000)]
Remove comdats from inlinehint.cpp to pass test on Darwin

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

9 years agoFix data layout mismatch between LLVM and Clang for i686-pc-windows-msvc-elf
Reid Kleckner [Wed, 1 Apr 2015 16:45:06 +0000 (16:45 +0000)]
Fix data layout mismatch between LLVM and Clang for i686-pc-windows-msvc-elf

Do the same thing as win64. If we're not using COFF, use the ELF
manglings. Maybe if we are targetting *-windows-msvc-macho, we should
use darwin manglings, but I don't need to stir that pot today.

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

9 years agoTry to fix nacl-direct.c driver test in Cygwin environment
Reid Kleckner [Wed, 1 Apr 2015 16:27:07 +0000 (16:27 +0000)]
Try to fix nacl-direct.c driver test in Cygwin environment

Why is NaCl not using the integrated assembler, by the way?

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

9 years agoMark instantiated function decls as inline specified if any pattern is
Reid Kleckner [Wed, 1 Apr 2015 16:23:44 +0000 (16:23 +0000)]
Mark instantiated function decls as inline specified if any pattern is

A function template pattern can be declared without the 'inline'
specifier and defined later with the 'inline' specifier. However, during
instantiation, we were only looking at the canonical decl to see if we
should mark the instantiated decl as inline specified. Since the
instantiated decl actually represents many pattern declarations, put the
inline specifier on the instantiation decl if any of the pattern decls
have it.

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

9 years ago[SystemZ] Add BuiltinsSystemZ.def to Clang_Basic modulemap
Ulrich Weigand [Wed, 1 Apr 2015 15:34:53 +0000 (15:34 +0000)]
[SystemZ] Add BuiltinsSystemZ.def to Clang_Basic modulemap

This should fix the last remaining build bot failures
resulting from the r233804 commit.

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

9 years ago[SystemZ] Add header files to Makefile / module.modulemap
Ulrich Weigand [Wed, 1 Apr 2015 14:15:35 +0000 (14:15 +0000)]
[SystemZ] Add header files to Makefile / module.modulemap

This should fix build-bot failures after r233804.

The patch also adds a "systemz" feature, and renames the
"transactional-execution" feature to "htm", since it turns
out "-" is not a legal character in module feature names.

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

9 years ago[SystemZ] Support transactional execution on zEC12
Ulrich Weigand [Wed, 1 Apr 2015 12:54:25 +0000 (12:54 +0000)]
[SystemZ] Support transactional execution on zEC12

The zEC12 provides the transactional-execution facility.  This is exposed
to users via a set of builtin routines on other compilers.  This patch
adds clang support to enable those builtins.  In partciular, the patch:

- enables the transactional-execution feature by default on zEC12
- allows to override presence of that feature via the -mhtm/-mno-htm options
- adds a predefined macro __HTM__ if the feature is enabled
- adds support for the transactional-execution GCC builtins
- adds Sema checking to verify the __builtin_tabort abort code
- adds the s390intrin.h header file (for GCC compatibility)
- adds s390 sections to the htmintrin.h and htmxlintrin.h header files

Since this is first use of target-specific intrinsics on the platform,
the patch creates the include/clang/Basic/BuiltinsSystemZ.def file and
hooks it up in TargetBuiltins.h and lib/Basic/Targets.cpp.

An associated LLVM patch adds the required LLVM IR intrinsics.

For reference, the transactional-execution instructions are documented
in the z/Architecture Principles of Operation for the zEC12:
http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/download/DZ9ZR009.pdf
The associated builtins are documented in the GCC manual:
http://gcc.gnu.org/onlinedocs/gcc/S_002f390-System-z-Built-in-Functions.html
The htmxlintrin.h intrinsics provided for compatibility with the IBM XL
compiler are documented in the "z/OS XL C/C++ Programming Guide".

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

9 years agoAVX-512: added clang intrinsics for logical and, or xor for 512 bits
Elena Demikhovsky [Wed, 1 Apr 2015 06:54:16 +0000 (06:54 +0000)]
AVX-512: added clang intrinsics for logical and, or xor for 512 bits
by Asaf Badouh (asaf.badouh@intel.com)

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

9 years ago[MS ABI] Disregard restrictive exception specifications
David Majnemer [Wed, 1 Apr 2015 04:45:52 +0000 (04:45 +0000)]
[MS ABI] Disregard restrictive exception specifications

MSVC treats all non-empty exception specifications the same way: all
exceptions are permitted.  The .xdata tables provide a way to
efficiently lower exception specifications *but* this probably has to be
implemented as a catch-all/rethrow mechanism instead of the Itanium way.

This fixes PR23092.

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

9 years ago[OPENMP] Sema analysis for 'atomic capture' construct.
Alexey Bataev [Wed, 1 Apr 2015 03:33:17 +0000 (03:33 +0000)]
[OPENMP] Sema analysis for 'atomic capture' construct.

Added sema checks for forms of expressions/statements allowed under control of 'atomic capture' directive + generation of helper objects for future codegen.

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

9 years ago[Objective-C metadata patch]. Patch to allocate one more space for
Fariborz Jahanian [Tue, 31 Mar 2015 22:22:40 +0000 (22:22 +0000)]
[Objective-C metadata patch]. Patch to allocate one more space for
Protocol objects in OBJC2. rdar://20286356

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

9 years agoFix nacl's clang driver tests to tolerate libdir suffixes and Windows paths.
Derek Schuff [Tue, 31 Mar 2015 21:43:52 +0000 (21:43 +0000)]
Fix nacl's clang driver tests to tolerate libdir suffixes and Windows paths.

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

9 years ago[lex] Bitfieldize some booleans.
Benjamin Kramer [Tue, 31 Mar 2015 18:47:05 +0000 (18:47 +0000)]
[lex] Bitfieldize some booleans.

Lets us fuse some branches into bit tests downstream. NFC.

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

9 years agoAdd sm_37 target to Clang for NVPTX
Eli Bendersky [Tue, 31 Mar 2015 17:03:16 +0000 (17:03 +0000)]
Add sm_37 target to Clang for NVPTX

Support for this target was added in LLVM r233575 and r233583

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

9 years agoSema: Accept pointers to any address space for builtin functions
Tom Stellard [Tue, 31 Mar 2015 16:39:02 +0000 (16:39 +0000)]
Sema: Accept pointers to any address space for builtin functions

As long as they don't have an address space explicitly defined.

This allows builtins with pointer arguments to be used with OpenCL.

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

9 years agoclang-format: [JS] Support getters, setters and methods in object literals.
Daniel Jasper [Tue, 31 Mar 2015 14:34:15 +0000 (14:34 +0000)]
clang-format: [JS] Support getters, setters and methods in object literals.

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

9 years agoMake new test slightly more generic to allow running it under
Daniel Jasper [Tue, 31 Mar 2015 09:08:16 +0000 (09:08 +0000)]
Make new test slightly more generic to allow running it under
non-standard test runners.

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

9 years ago[X86] Use getHostCPUFeatures when 'native' is specified for cpu.
Craig Topper [Tue, 31 Mar 2015 05:45:00 +0000 (05:45 +0000)]
[X86] Use getHostCPUFeatures when 'native' is specified for cpu.

This is necessary because not aall Sandybridge, Ivybrige, Haswell, and Broadwell CPUs support AVX. Currently we modify the CPU name back to Nehalem for this case, but that turns off additional features for these CPUs.

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

9 years agoUpdate for llvm commit r233648.
Eric Christopher [Tue, 31 Mar 2015 00:10:23 +0000 (00:10 +0000)]
Update for llvm commit r233648.

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

9 years ago[Objective-C patch]. Amend TransformObjCMessageExpr to handle call
Fariborz Jahanian [Mon, 30 Mar 2015 23:30:24 +0000 (23:30 +0000)]
[Objective-C patch]. Amend TransformObjCMessageExpr to handle call
to 'super' of instance/class methods and not assert.
rdar://20350364

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

9 years agoAdd driver support for Native Client SDK
Derek Schuff [Mon, 30 Mar 2015 20:31:33 +0000 (20:31 +0000)]
Add driver support for Native Client SDK

Add Tool and ToolChain support for clang to target the NaCl OS using the NaCl
SDK for x86-32, x86-64 and ARM.

Includes nacltools::Assemble and Link which are derived from gnutools. They
are similar to Linux but different enought that they warrant their own class.
Also includes a NaCl_TC in ToolChains derived from Generic_ELF with library
and include paths suitable for an SDK and independent of the system tools.

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

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

9 years ago[analyzer] Add test for previous commit.
Jordan Rose [Mon, 30 Mar 2015 20:18:04 +0000 (20:18 +0000)]
[analyzer] Add test for previous commit.

Again, this is being applied in a separate commit so that the previous commit
can be reverted while leaving the test in place.

rdar://problem/20335433

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

9 years ago[analyzer] Disable all retain count diagnostics on values that come from ivars.
Jordan Rose [Mon, 30 Mar 2015 20:18:00 +0000 (20:18 +0000)]
[analyzer] Disable all retain count diagnostics on values that come from ivars.

This is imitating a pre-r228174 state where ivars are not considered tracked by
default, but with the addition that even ivars /with/ retain count information
(e.g. "[_ivar retain]; [ivar _release];") are not being tracked as well. This is
to ensure that we don't regress on values accessed through both properties and
ivars, which is what r228174 was trying to fix.

The issue occurs in code like this:

  [_contentView retain];
  [_contentView removeFromSuperview];
  [self addSubview:_contentView]; // invalidates 'self'
  [_contentView release];

In this case, the call to -addSubview: may change the value of self->_contentView,
and so the analyzer can't be sure that we didn't leak the original _contentView.
This is a correct conservative view of the world, but not a useful one. Until we
have a heuristic that allows us to not consider this a leak, not emitting a
diagnostic is our best bet.

This commit disables all of the ivar-related retain count tests, but does not
remove them to ensure that we don't crash trying to evaluate either valid or
erroneous code. The next commit will add a new test for the example above so
that this commit (and the previous one) can be reverted wholesale when a better
solution is implemented.

Rest of rdar://problem/20335433

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

9 years ago[analyzer] Don't special-case ivars backing +0 properties.
Jordan Rose [Mon, 30 Mar 2015 20:17:47 +0000 (20:17 +0000)]
[analyzer] Don't special-case ivars backing +0 properties.

Give up this checking in order to continue tracking that these values came from
direct ivar access, which will be important in the next commit.

Part of rdar://problem/20335433

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

9 years agoDebugInfo: Use new LLVM API for DebugLoc
Duncan P. N. Exon Smith [Mon, 30 Mar 2015 20:01:41 +0000 (20:01 +0000)]
DebugInfo: Use new LLVM API for DebugLoc

Use the new API for `DebugLoc` added in r233573 before the old one
disappears.

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

9 years agoUpdating code owners file per discussion with Doug at the 2014-10 dev meeting.
Richard Smith [Mon, 30 Mar 2015 19:52:53 +0000 (19:52 +0000)]
Updating code owners file per discussion with Doug at the 2014-10 dev meeting.

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

9 years ago[PPC] Move argument range checks for HTM and crypto builtins to Sema
Kit Barton [Mon, 30 Mar 2015 19:40:59 +0000 (19:40 +0000)]
[PPC] Move argument range checks for HTM and crypto builtins to Sema

The argument range checks for the HTM and Crypto builtins were implemented in
CGBuiltin.cpp, not in Sema. This change moves them to the appropriate location
in SemaChecking.cpp. It requires the creation of a new method in the Sema class
to do checks for PPC-specific builtins.

http://reviews.llvm.org/D8672

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

9 years ago[SystemZ] Fix fallout from r233543 on no-assert builds
Ulrich Weigand [Mon, 30 Mar 2015 18:08:50 +0000 (18:08 +0000)]
[SystemZ] Fix fallout from r233543 on no-assert builds

Test cases must not check for symbolic variable names that are not
present in IR generated by no-assert builds.

Fixed by testing a more complete subset of the va_arg dataflow,
without relying on variable names.

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

9 years ago[SystemZ] Fix definition of IntMaxType / Int64Type
Ulrich Weigand [Mon, 30 Mar 2015 13:50:21 +0000 (13:50 +0000)]
[SystemZ] Fix definition of IntMaxType / Int64Type

Like on other 64-bit platforms, Int64Type should be SignedLong
on SystemZ, not SignedLongLong as per default.  This could cause
ABI incompatibilities in certain cases (e.g. name mangling).

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

9 years ago[SystemZ] Fix some ABI corner cases
Ulrich Weigand [Mon, 30 Mar 2015 13:49:01 +0000 (13:49 +0000)]
[SystemZ] Fix some ABI corner cases

Running the GCC's inter-compiler ABI compatibility test suite uncovered
a couple of errors in clang's SystemZ ABI implementation.  These all
affect only rare corner cases:

- Short vector types

GCC synthetic vector types defined with __attribute__ ((vector_size ...))
are always passed and returned by reference.  (This is not documented in
the official ABI document, but is the de-facto ABI implemented by GCC.)
clang would do that only for vector sizes >= 16 bytes, but not for shorter
vector types.

- Float-like aggregates and empty bitfields

clang would consider any aggregate containing an empty bitfield as
first element to be a float-like aggregate.  That's obviously wrong.
According to the ABI doc, the presence of an empty bitfield makes
an aggregate to be *not* float-like.  However, due to a bug in GCC,
empty bitfields are ignored in C++; this patch changes clang to be
compatible with this "feature" of GCC.

- Float-like aggregates and va_arg

The va_arg implementation would mis-detect some aggregates as float-like
that aren't actually passed as such.  This applies to aggregates that
have only a single element of type float or double, but using an aligned
attribute that increases the total struct size to more than 8 bytes.

This error occurred because the va_arg implement used to have an copy
of the float-like aggregate detection logic (i.e. it would call the
isFPArgumentType routine, but not perform the size check).

To simplify the logic, this patch removes the duplicated logic and
instead simply checks the (possibly coerced) LLVM argument type as
already determined by classifyArgumentType.

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

9 years ago[mips] Add support for 'ZC' inline assembly memory constraint.
Daniel Sanders [Mon, 30 Mar 2015 13:47:23 +0000 (13:47 +0000)]
[mips] Add support for 'ZC' inline assembly memory constraint.

Summary: Also add tests for 'R' and 'm'.

Reviewers: atanasyan

Reviewed By: atanasyan

Subscribers: cfe-commits

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

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

9 years agoclang-format: [JS] Fix comment formatting in goog.scopes.
Daniel Jasper [Mon, 30 Mar 2015 09:56:50 +0000 (09:56 +0000)]
clang-format: [JS] Fix comment formatting in goog.scopes.

Before:
  goog.scope(function() {
  // test
  var x = 0;
  // test
  });

After:
  goog.scope(function() {
  // test
  var x = 0;
    // test
  });

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

9 years ago[OPENMP] Codegen for 'atomic update' construct.
Alexey Bataev [Mon, 30 Mar 2015 05:20:59 +0000 (05:20 +0000)]
[OPENMP] Codegen for 'atomic update' construct.

Adds atomic update codegen for the following forms of expressions:

x binop= expr;
x++;
++x;
x--;
--x;
x = x binop expr;
x = expr binop x;
If x and expr are integer and binop is associative or x is a LHS in a RHS of the assignment expression, and atomics are allowed for type of x on the target platform atomicrmw instruction is emitted.
Otherwise compare-and-swap sequence is emitted:

bb:
...
atomic load <x>
cont:
<expected> = phi [ <x>, label %bb ], [ <new_failed>, %cont ]
<desired> = <expected> binop <expr>
<res> = cmpxchg atomic &<x>, desired, expected
<new_failed> = <res>.field1;
br <res>field2, label %exit, label %cont
exit:
...

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

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

9 years ago[OPENMP] Improved codegen for implicit/explicit 'barrier' constructs.
Alexey Bataev [Mon, 30 Mar 2015 04:30:22 +0000 (04:30 +0000)]
[OPENMP] Improved codegen for implicit/explicit 'barrier' constructs.

Replace boolean IsExplicit parameter of OpenMPRuntime::emitBarrierCall() method by OpenMPDirectiveKind Kind for better compatibility with the runtime library. Also add processing of 'nowait' clause on worksharing directives.
Differential Revision: http://reviews.llvm.org/D8659

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

9 years agoAdd check for kind of UnqualifiedId in Declarator::isStaticMember()
Petar Jovanovic [Mon, 30 Mar 2015 00:43:56 +0000 (00:43 +0000)]
Add check for kind of UnqualifiedId in Declarator::isStaticMember()

Method CXXMethodDecl::isStaticOverloadedOperator expects Operator field
from the struct OperatorFunctionId, which is a member of the union in
the class UnqualifiedId. If the kind of UnqualifiedId is not checked,
there is no guarantee that the value that this method receives will be
correct, because it can be the value of another union member and not
OperatorFunctionId.

This bug manifests itself when running make check-all on mips64 BE.

This fix resolves the following regression tests:
Clang :: CXX/special/class.dtor/p9.cpp
Clang :: CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp
Clang :: CodeGenCXX/ctor-dtor-alias.cpp
Clang :: CodeGenCXX/debug-info-windows-dtor.cpp
Clang :: CodeGenCXX/dllexport-members.cpp
Clang :: CodeGenCXX/dllexport.cpp

Patch by Violeta Vukobrat.

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

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

9 years ago[MS ABI] Rework .xdata HandlerType emission
David Majnemer [Sun, 29 Mar 2015 21:55:10 +0000 (21:55 +0000)]
[MS ABI] Rework .xdata HandlerType emission

Utilizing IMAGEREL relocations for synthetic IR constructs isn't
valuable, just clutter.  While we are here, simplify HandlerType names
by making the numeric value for the 'adjective' part of the mangled name
instead of appending '.const', etc.  The old scheme made for very long
global names and leads to wordy things like '.std_bad_alloc'

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

9 years ago[parse] Don't crash on alternative operator spellings from macros in c++11 attributes.
Benjamin Kramer [Sun, 29 Mar 2015 19:25:07 +0000 (19:25 +0000)]
[parse] Don't crash on alternative operator spellings from macros in c++11 attributes.

Found by afl-fuzz.

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

9 years ago[lex] Provide a valid token when __has_include is found outside of a pp directive
Benjamin Kramer [Sun, 29 Mar 2015 19:05:27 +0000 (19:05 +0000)]
[lex] Provide a valid token when __has_include is found outside of a pp directive

ExpandBuiltinMacro would strip the identifier and downstream users crash
when they encounter an identifier token with nullptr identifier info.

Found by afl-fuzz.

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

9 years ago[edit] Don't hit an assert when trying to delete a trailing space at EOF
Benjamin Kramer [Sun, 29 Mar 2015 18:07:29 +0000 (18:07 +0000)]
[edit] Don't hit an assert when trying to delete a trailing space at EOF

The buffer is guaranteed to be zero-terminated so we can just
circumvent the check. Found by afl-fuzz.

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

9 years ago[parser] Push _Atomic locs through DeclaratorChunk.
Benjamin Kramer [Sun, 29 Mar 2015 16:42:06 +0000 (16:42 +0000)]
[parser] Push _Atomic locs through DeclaratorChunk.

Otherwise it stays uninitialized with potentially catastrophic results.
Found by afl-fuzz.

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

9 years ago[lex] Don't create a garbage token if parsing of __has_include fails.
Benjamin Kramer [Sun, 29 Mar 2015 15:33:29 +0000 (15:33 +0000)]
[lex] Don't create a garbage token if parsing of __has_include fails.

It will crash downstream somewhere. Found by afl-fuzz.

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

9 years ago[Parse] Don't crash on ~A::{
Benjamin Kramer [Sun, 29 Mar 2015 14:35:39 +0000 (14:35 +0000)]
[Parse] Don't crash on ~A::{

Found by clang-fuzz.

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

9 years ago[lex] Don't read past the end of the buffer
Benjamin Kramer [Sun, 29 Mar 2015 14:11:37 +0000 (14:11 +0000)]
[lex] Don't read past the end of the buffer

While dereferencing ThisTokEnd is fine and we know that it's not in
[a-zA-Z0-9_.], ThisTokEnd[1] is really past the end.

Found by asan and with a little help from clang-fuzz.

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

9 years ago[lex] Turn range checks into asserts.
Benjamin Kramer [Sun, 29 Mar 2015 14:11:22 +0000 (14:11 +0000)]
[lex] Turn range checks into asserts.

We know that the last accessible char is not in [a-zA-Z0-9_.] so we can
happily scan on as long as it is. No functionality change.

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

9 years ago[scan-build] Be friendly to "" in the argument list.
Anna Zaks [Sat, 28 Mar 2015 02:17:21 +0000 (02:17 +0000)]
[scan-build] Be friendly to "" in the argument list.

Do not fail when "" is one of the compilation arguments.

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

9 years ago[Modules] Don't compute a modules cache path if we're not using modules!
Chandler Carruth [Sat, 28 Mar 2015 01:10:44 +0000 (01:10 +0000)]
[Modules] Don't compute a modules cache path if we're not using modules!

Notably, this prevents us from doing *tons* of work to compute the
modules hash, including trying to read a darwin specific plist file off
of the system. There is a lot that needs cleaning up below this layer
too.

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

9 years agoMake the clang-fuzzer use the CompilerInstance directly.
Manuel Klimek [Sat, 28 Mar 2015 00:42:36 +0000 (00:42 +0000)]
Make the clang-fuzzer use the CompilerInstance directly.

Going through the driver is too slow.

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

9 years agoA conversion from a scoped enumeration bitfield to an integral type is an
Richard Smith [Sat, 28 Mar 2015 00:31:40 +0000 (00:31 +0000)]
A conversion from a scoped enumeration bitfield to an integral type is an
integral promotion only if it converts to the underlying type or its promoted
type, not if it converts to the promoted type that the bitfield would have it
if were of the underlying type.

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

9 years agoAdd initial version of a clang-fuzzer.
Manuel Klimek [Sat, 28 Mar 2015 00:07:39 +0000 (00:07 +0000)]
Add initial version of a clang-fuzzer.

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

9 years agoDebugInfo: Don't call DIBuilder::retainType(nullptr)
Duncan P. N. Exon Smith [Fri, 27 Mar 2015 22:58:05 +0000 (22:58 +0000)]
DebugInfo: Don't call DIBuilder::retainType(nullptr)

An upcoming LLVM commit will make calling
`DIBuilder::retainType(nullptr)` illegal (actually, it already was, but
it wasn't verified).  Check for null before calling.

This triggered in test/CodeGenObjC/debug-info-block-helper.m.

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

9 years ago[modules] Allow a function template definition if we have a pre-existing but not...
Richard Smith [Fri, 27 Mar 2015 21:57:41 +0000 (21:57 +0000)]
[modules] Allow a function template definition if we have a pre-existing but not visible definition of the same template.

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

9 years ago[Modules] Work around PR23030 again, in a different code path, where
Chandler Carruth [Fri, 27 Mar 2015 21:40:58 +0000 (21:40 +0000)]
[Modules] Work around PR23030 again, in a different code path, where
I again added the "reasonable" assertions and they again fired during
a modules self-host.

This hopefully will un-break the self-host build bot. No test case handy
and adding one seems to have little or no value really.

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

9 years agoAdd file forgotten from r233420.
Richard Smith [Fri, 27 Mar 2015 21:40:57 +0000 (21:40 +0000)]
Add file forgotten from r233420.

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

9 years ago[modules] When merging class definitions, make the retained definition visible
Richard Smith [Fri, 27 Mar 2015 21:16:39 +0000 (21:16 +0000)]
[modules] When merging class definitions, make the retained definition visible
if the merged definition is visible, and perform lookups into all merged copies
of the definition (not just for special members) so that we can complete the
redecl chains for members of the class.

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

9 years ago[modules] Allow a function to be redefined if the old definition is not visible.
Richard Smith [Fri, 27 Mar 2015 20:16:58 +0000 (20:16 +0000)]
[modules] Allow a function to be redefined if the old definition is not visible.

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

9 years agoRevert "Don't use unique section names by default if using the integrated as."
Rafael Espindola [Fri, 27 Mar 2015 19:01:14 +0000 (19:01 +0000)]
Revert "Don't use unique section names by default if using the integrated as."

This reverts commit r233393 while a debug a bot failure.

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

9 years agoDon't use unique section names by default if using the integrated as.
Rafael Espindola [Fri, 27 Mar 2015 17:55:23 +0000 (17:55 +0000)]
Don't use unique section names by default if using the integrated as.

This saves some IO and ccache space by not creating long section names. It
should work with every ELF linker.

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

9 years agoMark DR777 only as fixed in clang SVN.
Benjamin Kramer [Fri, 27 Mar 2015 17:38:35 +0000 (17:38 +0000)]
Mark DR777 only as fixed in clang SVN.

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

9 years ago[Sema] Factor diags with %plural. No functionality change intended.
Benjamin Kramer [Fri, 27 Mar 2015 17:23:14 +0000 (17:23 +0000)]
[Sema] Factor diags with %plural. No functionality change intended.

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

9 years agoMake -fsanitize-coverage flag a core option so it's available via the clang-cl driver too
Timur Iskhodzhanov [Fri, 27 Mar 2015 16:32:10 +0000 (16:32 +0000)]
Make -fsanitize-coverage flag a core option so it's available via the clang-cl driver too

Reviewed at http://reviews.llvm.org/D8663

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

9 years agoRemove test for PR12917 for now. I'm relatively sure this is ill-formed per [dcl...
Benjamin Kramer [Fri, 27 Mar 2015 14:12:44 +0000 (14:12 +0000)]
Remove test for PR12917 for now. I'm relatively sure this is ill-formed per [dcl.fct.default]p3.

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

9 years ago[Sema] Implement DR777
Benjamin Kramer [Fri, 27 Mar 2015 13:58:41 +0000 (13:58 +0000)]
[Sema] Implement DR777

A parameter pack after a default argument is now valid.

PR23029.

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