]> granicus.if.org Git - clang/log
clang
9 years agoPut the implicit weak sized deallocation funciton in C++14 in a comdat
Reid Kleckner [Thu, 19 Feb 2015 21:01:34 +0000 (21:01 +0000)]
Put the implicit weak sized deallocation funciton in C++14 in a comdat

Fixes PR22635.

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

9 years agoRevert "Mangle the IsSystem bit into the .pcm file name"
Ben Langmuir [Thu, 19 Feb 2015 20:23:22 +0000 (20:23 +0000)]
Revert "Mangle the IsSystem bit into the .pcm file name"

While I investigate some possible problems with this patch.

This reverts commit r228966

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

9 years ago[PCH/Modules] Check that the specific module cache path the PCH was built with, is...
Argyrios Kyrtzidis [Thu, 19 Feb 2015 20:12:20 +0000 (20:12 +0000)]
[PCH/Modules] Check that the specific module cache path the PCH was built with, is the same as
the one in the current compiler invocation. If they differ reject the PCH.

This protects against the badness occurring from getting modules loaded from different module caches (see crashes).

rdar://19889860

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

9 years agoCodeGen: Weak reference temporaries belong in a COMDAT
David Majnemer [Thu, 19 Feb 2015 19:35:18 +0000 (19:35 +0000)]
CodeGen: Weak reference temporaries belong in a COMDAT

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

9 years agoCodeGen: static constexpr data members should have a linkonce_odr init
David Majnemer [Thu, 19 Feb 2015 19:25:17 +0000 (19:25 +0000)]
CodeGen: static constexpr data members should have a linkonce_odr init

Classes can be defined in multiple translation units.  This means that
the static constexpr data members should have identical initializers in
all translation units.  Implement this by giving the reference temporary
linkonce_odr linkage.

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

9 years agoMake the _mm256_insert_epi64 definition more consistent
Filipe Cabecinhas [Thu, 19 Feb 2015 19:00:33 +0000 (19:00 +0000)]
Make the _mm256_insert_epi64 definition more consistent

Use long long for the epi64 argument, like the other intrinsics.
NFC since this is only defined in 64-bit mode, not in 32-bit.

Fix suggested by H. J. Lu!

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

9 years agoclang-format: [js] Support ES6 module exports.
Daniel Jasper [Thu, 19 Feb 2015 16:14:18 +0000 (16:14 +0000)]
clang-format: [js] Support ES6 module exports.

Patch by Martin Probst, thank you!

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

9 years agoclang-format: [js] Support ES6 module imports.
Daniel Jasper [Thu, 19 Feb 2015 16:07:32 +0000 (16:07 +0000)]
clang-format: [js] Support ES6 module imports.

Patch by Martin Probst.

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

9 years agoclang-format: [js] Do not fall through for JS structural elements.
Daniel Jasper [Thu, 19 Feb 2015 16:03:16 +0000 (16:03 +0000)]
clang-format: [js] Do not fall through for JS structural elements.

Patch by Martin Probst. Thank you.

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

9 years agoFIX PR 18432, default args, friends & late-parsed members.
Nathan Sidwell [Thu, 19 Feb 2015 14:03:22 +0000 (14:03 +0000)]
FIX PR 18432, default args, friends & late-parsed members.

Sema::MergeCXXFunctionDecl: propagate hasUnparsedDefaultArg to new decl.

Parser::HandleMemberFunctionDeclDelays: check hasUnparsedDefaultArg
flag.

Parser::ParseLexedMethodDeclaration: handle inherited unparsed default
arg case.

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

9 years ago[analyzer] Different handling of alloca().
Anton Yartsev [Thu, 19 Feb 2015 13:36:20 +0000 (13:36 +0000)]
[analyzer] Different handling of alloca().

+ separate bug report for "Free alloca()" error to be able to customize checkers responsible for this error.
+ Muted "Free alloca()" error for NewDelete checker that is not responsible for c-allocated memory, turned on for unix.MismatchedDeallocator checker.
+ RefState for alloca() - to be able to detect usage of zero-allocated memory by upcoming ZeroAllocDereference checker.
+ AF_Alloca family to handle alloca() consistently - keep proper family in RefState, handle 'alloca' by getCheckIfTracked() facility, etc.
+ extra tests.

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

9 years agoSpelling correction.
Yaron Keren [Thu, 19 Feb 2015 11:21:11 +0000 (11:21 +0000)]
Spelling correction.

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

9 years agoMake -fmodules-decluse and -fmodules-strict-decluse compatible options.
Daniel Jasper [Thu, 19 Feb 2015 09:56:13 +0000 (09:56 +0000)]
Make -fmodules-decluse and -fmodules-strict-decluse compatible options.

They don't actually influence the result of the module compilation.

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

9 years agoMark DR1940 as implemented
David Majnemer [Thu, 19 Feb 2015 07:29:01 +0000 (07:29 +0000)]
Mark DR1940 as implemented

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

9 years agoMark DR1947 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:57 +0000 (07:28 +0000)]
Mark DR1947 as implemented

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

9 years agoMark DR1948 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:55 +0000 (07:28 +0000)]
Mark DR1948 as implemented

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

9 years agoMark DR1994 as a duplicate of DR529
David Majnemer [Thu, 19 Feb 2015 07:28:52 +0000 (07:28 +0000)]
Mark DR1994 as a duplicate of DR529

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

9 years agoMark DR1968 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:49 +0000 (07:28 +0000)]
Mark DR1968 as implemented

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

9 years agoCXXNameMangler::mangleUnresolvedPrefix(): Prune an obsolete \param, according to...
NAKAMURA Takumi [Thu, 19 Feb 2015 07:14:26 +0000 (07:14 +0000)]
CXXNameMangler::mangleUnresolvedPrefix(): Prune an obsolete \param, according to r229809. [-Wdocumentation]

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

9 years agoItanium ABI: Don't pass nullptr to a bool argument
David Majnemer [Thu, 19 Feb 2015 05:51:14 +0000 (05:51 +0000)]
Itanium ABI: Don't pass nullptr to a bool argument

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

9 years agoUpdate C++ implementation status page with recent changes w.r.t. to sized deallocation.
Larisse Voufo [Thu, 19 Feb 2015 04:34:13 +0000 (04:34 +0000)]
Update C++ implementation status page with recent changes w.r.t. to sized deallocation.

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

9 years ago[MSVC] Improved lookup into dependent/non-dependent bases of dependent class
Alexey Bataev [Thu, 19 Feb 2015 04:28:23 +0000 (04:28 +0000)]
[MSVC] Improved lookup into dependent/non-dependent bases of dependent class
Patch improves lookup into dependendt bases of dependent class and adds lookup
into non-dependent bases.
Differential Revision: http://reviews.llvm.org/D7173

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

9 years agoRevert adding hostname to module hash
Ben Langmuir [Thu, 19 Feb 2015 04:03:57 +0000 (04:03 +0000)]
Revert adding hostname to module hash

I didn't realize how easily the hostname could change - for example just
changing wireless networks seems to prompt it in some cases.

Users can always set their own local module cache path to avoid this.

This reverts commits r228592, 228594, 228601 and 228613.
rdar://19287368

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

9 years agoInstrProf: Always emit a coverage region for the condition of an if
Justin Bogner [Thu, 19 Feb 2015 03:10:30 +0000 (03:10 +0000)]
InstrProf: Always emit a coverage region for the condition of an if

When tools like llvm-cov show regions, it's much easier to understand
what's happening if the condition of an if shows a counter as well as
the body.

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

9 years agoFix a test case.
Larisse Voufo [Thu, 19 Feb 2015 03:03:23 +0000 (03:03 +0000)]
Fix a test case.

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

9 years ago[Headers] Add tests for _mm256_insert_epi64 and fix its definition
Filipe Cabecinhas [Thu, 19 Feb 2015 03:02:33 +0000 (03:02 +0000)]
[Headers] Add tests for _mm256_insert_epi64 and fix its definition

Summary:
The definition for _mm256_insert_epi64 was taking an int, which would get
truncated before being inserted in the vector.

Original patch by Joshua Magee!

Reviewers: bruno, craig.topper

Subscribers: cfe-commits

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

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

9 years agoItanium ABI: Properly qualify the destructor-name
David Majnemer [Thu, 19 Feb 2015 02:16:16 +0000 (02:16 +0000)]
Itanium ABI: Properly qualify the destructor-name

We didn't have enough qualificaiton before the scope specifier and we
had too much qualification in the destructor name itself.

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

9 years agoImprove our handling of rtti/sanitize=vptr/sanitize=undefined
Filipe Cabecinhas [Thu, 19 Feb 2015 01:04:49 +0000 (01:04 +0000)]
Improve our handling of rtti/sanitize=vptr/sanitize=undefined

This patch removes the huge blob of code that is dealing with
rtti/exceptions/sanitizers and replaces it with:

A ToolChain function which, for a given set of Args, figures out if rtti
should be:
  - enabled
  - disabled implicitly
  - disabled explicitly

A change in the way SanitizerArgs figures out what sanitizers to enable
(or if it should error out, or warn);

And a check for exceptions/rtti interaction inside addExceptionArgs.

The RTTIMode algorithm is:
  - If -mkernel, -fapple-kext, or -fno-rtti are passed, rtti was disabled explicitly;
  - If -frtti was passed or we're not targetting the PS4, rtti is enabled;
  - If -fexceptions or -fcxx-exceptions was passed and we're targetting
    the PS4, rtti was enabled implicitly;
  - If we're targetting the PS4, rtti is disabled implicitly;
  - Otherwise, rtti is enabled;

Since the only flag needed to pass to -cc1 is -fno-rtti if we want to
disable it, there's no problem in saying rtti is enabled if we're
compiling C code, so we don't look at the input file type.

addExceptionArgs now looks at the RTTIMode and warns that rtti is being
enabled implicitly if targetting the PS4 and exceptions are on. It also
errors out if, targetting the PS4, -fno-rtti was passed, and exceptions
were turned on.

SanitizerArgs now errors out if rtti was disabled explicitly and the vptr
sanitizer was enabled implicitly, but just turns off vptr if rtti is
disabled but -fsanitize=undefined was passed.

Also fixed tests, removed duplicate name from addExceptionArgs comment,
and added one or two surrounding lines when running clang-format.
This changes test/Driver/fsanitize.c to make it not expect a warning when
passed -fsanitize=undefined -fno-rtti, but expect vptr to not be on.

Removed all users and definition of SanitizerArgs::sanitizesVptr().

Reviewers: samsonov

Subscribers: llvm-commits, samsonov, rsmith

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

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

9 years agoPR22566: a conversion from a floating-point type to bool is a narrowing conversion.
Richard Smith [Thu, 19 Feb 2015 00:39:05 +0000 (00:39 +0000)]
PR22566: a conversion from a floating-point type to bool is a narrowing conversion.

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

9 years agoAllow errors on use of a private module header to be disabled, to better support...
Richard Smith [Thu, 19 Feb 2015 00:10:28 +0000 (00:10 +0000)]
Allow errors on use of a private module header to be disabled, to better support incremental transition to modules.

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

9 years agoclang-format: Space and triple angle braces.
Jacques Pienaar [Wed, 18 Feb 2015 23:48:37 +0000 (23:48 +0000)]
clang-format: Space and triple angle braces.

Committing patch http://reviews.llvm.org/D6800.

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

9 years agoRemove support for building sanitizers from Makefile/autoconf build on Linux.
Alexey Samsonov [Wed, 18 Feb 2015 22:26:22 +0000 (22:26 +0000)]
Remove support for building sanitizers from Makefile/autoconf build on Linux.

This is a re-application of r229554 restricted to Linux build only.
Apple still uses Makefile/autoconf to build Clang and sanitizers.

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

9 years ago[docs] Recommend to use CMake for building sanitizers.
Alexey Samsonov [Wed, 18 Feb 2015 22:26:20 +0000 (22:26 +0000)]
[docs] Recommend to use CMake for building sanitizers.

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

9 years agoInstrProf: Rewrite most of coverage mapping generation in a simpler way
Justin Bogner [Wed, 18 Feb 2015 21:24:51 +0000 (21:24 +0000)]
InstrProf: Rewrite most of coverage mapping generation in a simpler way

The coverage mapping generation code previously generated a large
number of redundant coverage regions and then tried to merge similar
ones back together. This then relied on some awkward heuristics to
prevent combining of regions that were importantly different but
happened to have the same count. The end result was inefficient and
hard to follow.

Now, we more carefully create the regions we actually want. This makes
it much easier to create regions at precise locations as well as
making the basic approach quite a bit easier to follow. There's still
a fair bit of complexity here dealing with included code and macro
expansions, but that's pretty hard to avoid without significantly
reducing the quality of data we provide.

I had to modify quite a few tests where the source ranges became more
precise or the old ranges seemed to be wrong anyways, and I've added
quite a few new tests since a large number of constructs didn't seem
to be tested before.

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

9 years agoRemove unused diagnostic.
Benjamin Kramer [Wed, 18 Feb 2015 19:30:34 +0000 (19:30 +0000)]
Remove unused diagnostic.

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

9 years agoItanium ABI: Write a character instead of a string literal
David Majnemer [Wed, 18 Feb 2015 19:08:14 +0000 (19:08 +0000)]
Itanium ABI: Write a character instead of a string literal

No functional change intended.

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

9 years agoItanium ABI: Restore disabled tests which are correctly mangled
David Majnemer [Wed, 18 Feb 2015 19:08:12 +0000 (19:08 +0000)]
Itanium ABI: Restore disabled tests which are correctly mangled

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

9 years agoItanium ABI: Properly mangle extern "C" template arguments
David Majnemer [Wed, 18 Feb 2015 19:08:11 +0000 (19:08 +0000)]
Itanium ABI: Properly mangle extern "C" template arguments

extern "C" declarations should be considered like global declarations
for mangling purposes.

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

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

9 years agoDriver: Fix use of dangling std::string temporary
Benjamin Kramer [Wed, 18 Feb 2015 18:45:54 +0000 (18:45 +0000)]
Driver: Fix use of dangling std::string temporary

What's going on here is that the ternary operator produces a std::string rvalue
that the StringRef points to. I'd hoped bugs like this were a thing of the past
with our asan testing but apparently this code path is only used when LLVM is
configured with a custom --with-c-include-dirs setting.

Unbreaks bootstrapping with GCC5 on Fedora (PR22625), patch by Jonathan Wakely!

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

9 years agoSema: Allow 'constexpr' variables in range loops
Meador Inge [Wed, 18 Feb 2015 18:34:59 +0000 (18:34 +0000)]
Sema: Allow 'constexpr' variables in range loops

This fixes PR22492, which is in response to CWG issue #1204.
Per the CWG issue 'contexpr' variables are now allowed in
for range loops.

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

9 years agoclang-format: [JS] support AtScript style annotations for JS.
Daniel Jasper [Wed, 18 Feb 2015 17:17:15 +0000 (17:17 +0000)]
clang-format: [JS] support AtScript style annotations for JS.

Based on Java annotation support and style.

Patch by Martin Probst.

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

9 years agoclang-format: [JS] Support classes.
Daniel Jasper [Wed, 18 Feb 2015 17:14:05 +0000 (17:14 +0000)]
clang-format: [JS] Support classes.

This adds support for JavaScript class definitions (again following
TypeScript & AtScript style). This only required support for
visibility modifiers in JS, everything else was already working.

Patch by Martin Probst, thank you.

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

9 years agoclang-format: [JS] Support type annotations.
Daniel Jasper [Wed, 18 Feb 2015 17:09:53 +0000 (17:09 +0000)]
clang-format: [JS] Support type annotations.

This patch adds support for type annotations that follow TypeScript's,
Flow's, and AtScript's syntax style.

Patch by Martin Probst, thank you.
Review: http://reviews.llvm.org/D7721

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

9 years agoChange representation of member function pointers for MIPS targets
Zoran Jovanovic [Wed, 18 Feb 2015 15:21:35 +0000 (15:21 +0000)]
Change representation of member function pointers for MIPS targets
Differential Revision: http://reviews.llvm.org/D7148

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

9 years agoFix test/CodeGen/atomic_ops.c failure on clang-cmake-mips builder (and others).
Daniel Sanders [Wed, 18 Feb 2015 15:08:37 +0000 (15:08 +0000)]
Fix test/CodeGen/atomic_ops.c failure on clang-cmake-mips builder (and others).

Not all targets generate 'store atomic' instructions for
'_Atomic(_Complex int)'. Some targets use the __atomic_store builtin instead.

This commit makes the test accept either one.

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

9 years agoPrevent use after free caused by accessing a member into a dense set.
Daniel Jasper [Wed, 18 Feb 2015 14:13:46 +0000 (14:13 +0000)]
Prevent use after free caused by accessing a member into a dense set.

The member gets invalidated as elements are added to the dense set. Directly
access the underlying pointer instead. Not sure how to create a test case for
this :-(. Maybe Richard can help.

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

9 years ago[ARM] Add missing M/R class CPUs
Bradley Smith [Wed, 18 Feb 2015 10:34:48 +0000 (10:34 +0000)]
[ARM] Add missing M/R class CPUs

Add some of the missing M and R class Cortex CPUs, namely:

Cortex-M0+ (called Cortex-M0plus for GCC compatibility)
Cortex-M1
SC000
SC300
Cortex-R5

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

9 years agoItanium ABI: Mangle <mangled-name> according to the ABI
David Majnemer [Wed, 18 Feb 2015 07:47:09 +0000 (07:47 +0000)]
Itanium ABI: Mangle <mangled-name> according to the ABI

We attempted to be compatible with GCC's buggy mangling for templates
with a declaration for a template argument.

However, we weren't completely successful in copying their bug in cases
like:
  char foo;
  template <char &C> decltype(C) f() { return foo; };
  template char &f<foo>();

Instead, just follow the ABI specification.  This fixes PR22621.

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

9 years agoPort r163224 to C++.
Nico Weber [Wed, 18 Feb 2015 05:19:40 +0000 (05:19 +0000)]
Port r163224 to C++.

The motivation is to fix a crash on

  struct S {} s;
  Foo S::~S() { s.~S(); }

What was happening here was that S::~S() was marked as invalid since its
return type is invalid, and as a consequence CheckFunctionDeclaration() wasn't
called and S::~S() didn't get merged into S's implicit destructor.  This way,
the class ended up with two destructors, which confused the overload printer
when it suddenly had to print two possible destructors for `s.~S()`.

In addition to fixing the crash, this change also seems to improve diagnostics
in a few other places, see test changes.

Crash found by SLi's bot.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Wed, 18 Feb 2015 04:53:03 +0000 (04:53 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoSema: partially address post-commit comments
Saleem Abdulrasool [Wed, 18 Feb 2015 04:33:26 +0000 (04:33 +0000)]
Sema: partially address post-commit comments

Un-parameterize the warning as there is exactly one attribute added in C++14.
Partially addresses post-commit review comments from Richard Smith.

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

9 years agoCodeGen: Relax a FileCheck line for SystemZ
David Majnemer [Wed, 18 Feb 2015 02:28:15 +0000 (02:28 +0000)]
CodeGen: Relax a FileCheck line for SystemZ

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

9 years agoSema: size_t is available in C when -fms-compatibility is enabled
David Majnemer [Wed, 18 Feb 2015 02:28:13 +0000 (02:28 +0000)]
Sema: size_t is available in C when -fms-compatibility is enabled

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

9 years agoItanium ABI: Improve our mangling of <destructor-name>
David Majnemer [Wed, 18 Feb 2015 02:28:01 +0000 (02:28 +0000)]
Itanium ABI: Improve our mangling of <destructor-name>

Our mangling of <destructor-name> wasn't quite right: we'd introduce
mangling substitutions where one shouldn't be possible.  We also didn't
correctly handle the case where the destroyed type was not dependent but
still a TemplateSpecializationType.

N.B. There isn't a mangling for a template-template parameter showing up
as the destroyed type.  We do the 'obvious' thing and mangle the index
of the parameter.

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

9 years agoRename flags and options to match current naming: from -fdef-sized-delete to -fdefine...
Larisse Voufo [Wed, 18 Feb 2015 01:04:10 +0000 (01:04 +0000)]
Rename flags and options to match current naming: from -fdef-sized-delete to -fdefine-sized-deallocation, and from DefaultSizedDelete to DefineSizedDeallocation.

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

9 years ago[analyzer] Refactoring: clarified the way the proper check kind is chosen.
Anton Yartsev [Wed, 18 Feb 2015 00:39:06 +0000 (00:39 +0000)]
[analyzer] Refactoring: clarified the way the proper check kind is chosen.

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

9 years agoclang-cl: Map /wd4996 to -Wno-deprecated-declarations
Reid Kleckner [Tue, 17 Feb 2015 23:28:19 +0000 (23:28 +0000)]
clang-cl: Map /wd4996 to -Wno-deprecated-declarations

This is typically used to suppress warnings about calling snprintf and
other "deprecated" POSIX functions. Accepting this flag helps avoid tons
of useless warnings when trying out clang-cl on a new project.

Patch by Scott Graham!

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

9 years agoRevert "Remove support for building sanitizers from Makefile/autoconf build."
Matthias Braun [Tue, 17 Feb 2015 23:27:37 +0000 (23:27 +0000)]
Revert "Remove support for building sanitizers from Makefile/autoconf build."

This reverts commit r229554.

Reverting this commit for now as several apple internal builds still
rely on this functionality.

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

9 years agoclang-cl: Disable frame pointer elimination at -O0
Reid Kleckner [Tue, 17 Feb 2015 22:40:42 +0000 (22:40 +0000)]
clang-cl: Disable frame pointer elimination at -O0

This wasn't kicking in because the _SLASH_O flag didn't match our check
for OPT_O0. Add an alias that does to keep the logic simple.

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

9 years agoSema: Replace some push_backs of expensive to move objects with emplace_back.
Benjamin Kramer [Tue, 17 Feb 2015 21:55:18 +0000 (21:55 +0000)]
Sema: Replace some push_backs of expensive to move objects with emplace_back.

NFC.

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

9 years agoRemove support for building sanitizers from Makefile/autoconf build.
Alexey Samsonov [Tue, 17 Feb 2015 21:53:22 +0000 (21:53 +0000)]
Remove support for building sanitizers from Makefile/autoconf build.

They autotools build has a number of missing features, supports less
OS, architectures, build configurations, doesn't have any tests and
is hard to support in sync with CMake build.

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

9 years agoRevert r229543.
Meador Inge [Tue, 17 Feb 2015 21:42:45 +0000 (21:42 +0000)]
Revert r229543.

Reverting this while build bot failures are investigated.

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

9 years agoSema: Allow 'constexpr' variables in range loops
Meador Inge [Tue, 17 Feb 2015 21:02:56 +0000 (21:02 +0000)]
Sema: Allow 'constexpr' variables in range loops

This fixes PR22492, which is in response to CWG issue #1204.
Per the CWG issue 'contexpr' variables are now allowed in
for range loops.

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

9 years agoRemove a recovery attempt that was untested and crashed when used.
Nico Weber [Tue, 17 Feb 2015 20:09:39 +0000 (20:09 +0000)]
Remove a recovery attempt that was untested and crashed when used.

Found by SLi's bot.

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

9 years agoRemove the ABI from the target features. It's obsoleted by
Eric Christopher [Tue, 17 Feb 2015 19:51:15 +0000 (19:51 +0000)]
Remove the ABI from the target features. It's obsoleted by
the -target-abi use and those features don't exist anymore.

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

9 years agoAdd a testcase that exercises DIBuilder's handling of cyclic debug info nodes.
Adrian Prantl [Tue, 17 Feb 2015 19:17:56 +0000 (19:17 +0000)]
Add a testcase that exercises DIBuilder's handling of cyclic debug info nodes.

rdar://problem/19839612

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

9 years agoRevert accidental commit.
Benjamin Kramer [Tue, 17 Feb 2015 16:53:08 +0000 (16:53 +0000)]
Revert accidental commit.

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

9 years agoPrefer SmallVector::append/insert over push_back loops. Clang edition.
Benjamin Kramer [Tue, 17 Feb 2015 16:48:30 +0000 (16:48 +0000)]
Prefer SmallVector::append/insert over push_back loops. Clang edition.

Same functionality, but hoists the vector growth out of the loop.

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

9 years agoAppend -fno-assume-sane-operator-new in ASan builds.
Sergey Matveev [Tue, 17 Feb 2015 15:09:33 +0000 (15:09 +0000)]
Append -fno-assume-sane-operator-new in ASan builds.

This should help LSan detect leaks where operator new would otherwise be
optimized out.

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

9 years agoclang-format: Don't force a break after "endl" if everything fits on one line.
Daniel Jasper [Tue, 17 Feb 2015 10:05:15 +0000 (10:05 +0000)]
clang-format: Don't force a break after "endl" if everything fits on one line.

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

9 years agoclang-format: Fix crasher.
Daniel Jasper [Tue, 17 Feb 2015 09:58:03 +0000 (09:58 +0000)]
clang-format: Fix crasher.

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

9 years agoMake tests independent of llvm variable naming.
Manuel Klimek [Tue, 17 Feb 2015 09:49:31 +0000 (09:49 +0000)]
Make tests independent of llvm variable naming.

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

9 years ago[X86] Convert palignr builtin handling to use shuffle form of right shift instead...
Craig Topper [Tue, 17 Feb 2015 07:18:01 +0000 (07:18 +0000)]
[X86] Convert palignr builtin handling to use shuffle form of right shift instead of intrinsics. This should allow the instrinsics to removed from the backend.

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

9 years agoAdd more tests for NSArray/NSDictionary literals
Alex Denisov [Tue, 17 Feb 2015 06:43:10 +0000 (06:43 +0000)]
Add more tests for NSArray/NSDictionary literals

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

9 years ago[X86] Merge the 2 separate builtin handlers for PALIGNR into a single one that handle...
Craig Topper [Tue, 17 Feb 2015 06:37:58 +0000 (06:37 +0000)]
[X86] Merge the 2 separate builtin handlers for PALIGNR into a single one that handles both.

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

9 years ago[X86] Remove code that does custom handling of the builtin for MMX palignr. This...
Craig Topper [Tue, 17 Feb 2015 06:22:50 +0000 (06:22 +0000)]
[X86] Remove code that does custom handling of the builtin for MMX palignr. This code is unreachable since its already marked for non-custom handling in llvm's IntrinsicsX86.td file.

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

9 years ago[Objctive-C sema]. Do not do the unused-getter-return-value
Fariborz Jahanian [Mon, 16 Feb 2015 23:49:44 +0000 (23:49 +0000)]
[Objctive-C sema]. Do not do the unused-getter-return-value
warning when property getter is used in direct method call
and return value of property is unused. rdar://19773512

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

9 years agoMinor tweaks to r229447 to ensure the attribute is properly quoted when diagnosed.
Aaron Ballman [Mon, 16 Feb 2015 23:12:37 +0000 (23:12 +0000)]
Minor tweaks to r229447 to ensure the attribute is properly quoted when diagnosed.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Mon, 16 Feb 2015 22:35:45 +0000 (22:35 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years agoFor variables with dependent type, don't crash on `var->::new` or `var->__super`
Nico Weber [Mon, 16 Feb 2015 22:32:46 +0000 (22:32 +0000)]
For variables with dependent type, don't crash on `var->::new` or `var->__super`

ParsePostfixExpressionSuffix() for '->' (or '.') postfixes first calls
ActOnStartCXXMemberReference() to inform sema that a member reference is about
to start, and that function lets the parser know if sema thinks that the
base expression's type could allow a pseudo destructor from a semantic point of
view (for example, if the the base expression has a dependent type).

ParsePostfixExpressionSuffix() then calls ParseOptionalCXXScopeSpecifier() and
passes MayBePseudoDestructor on to that function, expecting the function to
set it to false if a pseudo destructor is impossible from a syntactic point of
view (due to a lack of '~' sigil).  However, ParseOptionalCXXScopeSpecifier()
had early-outs for ::new and __super, so MayBePseudoDestructor stayed true,
so we tried to parse a pseudo dtor, and then became confused since we couldn't
find a '~'.  Move the snippet in ParseOptionalCXXScopeSpecifier() that sets
MayBePseudoDestructor to false above the early exits.

Parts of this found by SLi's bot.

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

9 years agoSema: diagnose use of unscoped deprecated prior to C++14
Saleem Abdulrasool [Mon, 16 Feb 2015 22:27:01 +0000 (22:27 +0000)]
Sema: diagnose use of unscoped deprecated prior to C++14

The deprecated attribute was adopted as part of the C++14, however, there is a
GNU version available in C++11.  When using C++ earlier than C++14, diagnose the
use of the attribute without the GNU scope, but only when using the generalised
attribute syntax.

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

9 years agoParse: return true from ParseCXX11AttributeArgs if an attribute was added
Saleem Abdulrasool [Mon, 16 Feb 2015 22:26:52 +0000 (22:26 +0000)]
Parse: return true from ParseCXX11AttributeArgs if an attribute was added

In the case that we diagnosed an invalid attribute due to missing or present
arguments, we would return false, indicating to the caller that the parsing
failed.  However, we would have added the attribute in ParseAttributeArgsCommon
(which may have been called indirectly through ParseGNUAttributeArgs).
Returning true in this case ensures that a second copy of the attribute is not
added.

I haven't added a test case for this as the existing test will cover this with
the next commit which diagnoses a C++14 attribute applied in C++11 mode.  Rather
than duplicating the existing test case, allow the tree to remain without a test
between this and the next change.  We would see double warnings in the
[[deprecated()]] applied to a declaration in C++11 mode, which will cause an
error in the cxx0x-attributes test.

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

9 years ago[X86] Remove completely unnecessary switch statement.
Craig Topper [Mon, 16 Feb 2015 21:30:08 +0000 (21:30 +0000)]
[X86] Remove completely unnecessary switch statement.

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

9 years agoInstrProf: Update for LLVM API change
Justin Bogner [Mon, 16 Feb 2015 21:29:05 +0000 (21:29 +0000)]
InstrProf: Update for LLVM API change

Update for the API change in r229433

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

9 years agoFix typo in comment.
Nico Weber [Mon, 16 Feb 2015 21:21:12 +0000 (21:21 +0000)]
Fix typo in comment.

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

9 years agoASTMatchers: Make TypeList a variadic template and remove the implicit flattening...
Benjamin Kramer [Mon, 16 Feb 2015 20:37:00 +0000 (20:37 +0000)]
ASTMatchers: Make TypeList a variadic template and remove the implicit flattening of TypeLists.

Building trees of TypeLists is no longer necessary.

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

9 years agoEnhance printing SizeOfPackExpr in dump.
Serge Pavlov [Mon, 16 Feb 2015 19:58:41 +0000 (19:58 +0000)]
Enhance printing SizeOfPackExpr in dump.

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

9 years agoRegression test for RP6954.
Serge Pavlov [Mon, 16 Feb 2015 18:27:41 +0000 (18:27 +0000)]
Regression test for RP6954.

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

9 years agoRevert r229409: "Hack to try deleting file from build bots"
Matt Arsenault [Mon, 16 Feb 2015 18:03:59 +0000 (18:03 +0000)]
Revert r229409: "Hack to try deleting file from build bots"

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

9 years agoHack to try deleting file from build bots
Matt Arsenault [Mon, 16 Feb 2015 17:33:12 +0000 (17:33 +0000)]
Hack to try deleting file from build bots

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

9 years agox86-64 ABI: unwrap single element structs / arrays of 256-bit vectors to pass and...
Sanjay Patel [Mon, 16 Feb 2015 17:26:51 +0000 (17:26 +0000)]
x86-64 ABI: unwrap single element structs / arrays of 256-bit vectors to pass and return in registers

This is a patch for PR22563 ( http://llvm.org/bugs/show_bug.cgi?id=22563 ).

We were not correctly unwrapping a single 256-bit AVX vector that was defined as an array of 1 inside a struct.

We would generate a <4 x float> param/return value instead of <8 x float> and lose half of the vector.

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

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

9 years agoDon't create output file in test
Matt Arsenault [Mon, 16 Feb 2015 17:11:58 +0000 (17:11 +0000)]
Don't create output file in test

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

9 years agoMove helper class into an anonymous namespace.
Benjamin Kramer [Mon, 16 Feb 2015 16:53:12 +0000 (16:53 +0000)]
Move helper class into an anonymous namespace.

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

9 years agoOpenCL: Accept -cl-strict-aliasing
Matt Arsenault [Mon, 16 Feb 2015 16:43:13 +0000 (16:43 +0000)]
OpenCL: Accept -cl-strict-aliasing

This was in 1.0, but deprecated in 1.1. Accept it and do nothing
for compatability.

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

9 years agoFix crash when clang tries to build NSNumber literal after forward declaration
Alex Denisov [Mon, 16 Feb 2015 16:17:05 +0000 (16:17 +0000)]
Fix crash when clang tries to build NSNumber literal after forward declaration

Bug report: http://llvm.org/bugs/show_bug.cgi?id=22561

Clang tries to create ObjCBoxedExpression of type 'NSNumber'
when 'NSNumber' has only forward declaration, this cause a crash later,
when 'Sema' refers to a nil QualType of the whole expression.
Please, refer to the bug report for the better explanation.

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

9 years agoAnalyzer: Flatten Checker hierarchy.
Benjamin Kramer [Mon, 16 Feb 2015 15:43:06 +0000 (15:43 +0000)]
Analyzer: Flatten Checker hierarchy.

We still instantiate all the levels but there's no need to create a vtable for
every level in the hierarchy.

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

9 years agoReverting a switch from LLVM_DELETED_FUNCTION to = delete; this test should not have...
Aaron Ballman [Mon, 16 Feb 2015 14:14:01 +0000 (14:14 +0000)]
Reverting a switch from LLVM_DELETED_FUNCTION to = delete; this test should not have changed.

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

9 years agoFix quoting of #pragma comment for MS compat, clang part.
Michael Kuperstein [Mon, 16 Feb 2015 11:57:43 +0000 (11:57 +0000)]
Fix quoting of #pragma comment for MS compat, clang part.

For #pragma comment(linker, ...) MSVC expects the comment string to be quoted, but for #pragma comment(lib, ...) the compiler itself quotes the library name.
Since this distinction disappears by the time the directive reaches the backend, move quoting for the "lib" version to the frontend.

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

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

9 years agoASTMatchers: Replace enable_if with static_assert.
Benjamin Kramer [Mon, 16 Feb 2015 11:08:00 +0000 (11:08 +0000)]
ASTMatchers: Replace enable_if with static_assert.

This is nicer in general and gives a better error message, but it also might
bring MSVC 2013 back to life.

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

9 years agoASTMatchers: Make VariadicOperatorMatcher a real variadic template.
Benjamin Kramer [Mon, 16 Feb 2015 10:29:51 +0000 (10:29 +0000)]
ASTMatchers: Make VariadicOperatorMatcher a real variadic template.

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