Commit Graph

24535 Commits

Author SHA1 Message Date
Daniel Jasper 22a3e79aaf Make -fmodules-decluse and -fmodules-strict-decluse compatible options.
They don't actually influence the result of the module compilation.

llvm-svn: 229834
2015-02-19 09:56:13 +00:00
David Majnemer 12d3783add Mark DR1940 as implemented
llvm-svn: 229829
2015-02-19 07:29:01 +00:00
David Majnemer 6440548434 Mark DR1947 as implemented
llvm-svn: 229828
2015-02-19 07:28:57 +00:00
David Majnemer 7da2302780 Mark DR1948 as implemented
llvm-svn: 229827
2015-02-19 07:28:55 +00:00
David Majnemer 54dc82e1d2 Mark DR1994 as a duplicate of DR529
llvm-svn: 229826
2015-02-19 07:28:52 +00:00
David Majnemer 2dbad01349 Mark DR1968 as implemented
llvm-svn: 229825
2015-02-19 07:28:49 +00:00
Alexey Bataev 054829b1bd [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

llvm-svn: 229817
2015-02-19 04:28:23 +00:00
Justin Bogner 91f2e3c9c2 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.

llvm-svn: 229813
2015-02-19 03:10:30 +00:00
Larisse Voufo 62d8aa5caf Fix a test case.
llvm-svn: 229812
2015-02-19 03:03:23 +00:00
Filipe Cabecinhas 54a2ba8b76 [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

llvm-svn: 229811
2015-02-19 03:02:33 +00:00
David Majnemer b8014dd7c0 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.

llvm-svn: 229809
2015-02-19 02:16:16 +00:00
Filipe Cabecinhas ec5d0e6423 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

llvm-svn: 229801
2015-02-19 01:04:49 +00:00
Richard Smith 64ecacf6cb PR22566: a conversion from a floating-point type to bool is a narrowing conversion.
llvm-svn: 229792
2015-02-19 00:39:05 +00:00
Richard Smith 11152dd55f Allow errors on use of a private module header to be disabled, to better support incremental transition to modules.
llvm-svn: 229788
2015-02-19 00:10:28 +00:00
Justin Bogner bf42cfd75f 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.

llvm-svn: 229748
2015-02-18 21:24:51 +00:00
David Majnemer eed9c8bb44 Itanium ABI: Restore disabled tests which are correctly mangled
llvm-svn: 229725
2015-02-18 19:08:12 +00:00
David Majnemer f8c02e6bfb 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

llvm-svn: 229724
2015-02-18 19:08:11 +00:00
Meador Inge 34e79ed319 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.

llvm-svn: 229716
2015-02-18 18:34:59 +00:00
Zoran Jovanovic 26a1216a74 Change representation of member function pointers for MIPS targets
Differential Revision: http://reviews.llvm.org/D7148

llvm-svn: 229680
2015-02-18 15:21:35 +00:00
Daniel Sanders 933f0a04d3 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.

llvm-svn: 229676
2015-02-18 15:08:37 +00:00
Bradley Smith d86d670e85 [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

llvm-svn: 229661
2015-02-18 10:34:48 +00:00
David Majnemer 7ff7eb706a 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.

llvm-svn: 229644
2015-02-18 07:47:09 +00:00
Nico Weber 4486d61c03 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.

llvm-svn: 229639
2015-02-18 05:19:40 +00:00
David Majnemer 5927e7b681 CodeGen: Relax a FileCheck line for SystemZ
llvm-svn: 229617
2015-02-18 02:28:15 +00:00
David Majnemer be52539650 Sema: size_t is available in C when -fms-compatibility is enabled
llvm-svn: 229616
2015-02-18 02:28:13 +00:00
David Majnemer a88b359fdc 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.

llvm-svn: 229615
2015-02-18 02:28:01 +00:00
Larisse Voufo e990a3f60c Rename flags and options to match current naming: from -fdef-sized-delete to -fdefine-sized-deallocation, and from DefaultSizedDelete to DefineSizedDeallocation.
llvm-svn: 229597
2015-02-18 01:04:10 +00:00
Reid Kleckner 469b6bce61 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!

llvm-svn: 229583
2015-02-17 23:28:19 +00:00
Meador Inge 8dfa40b84b Revert r229543.
Reverting this while build bot failures are investigated.

llvm-svn: 229550
2015-02-17 21:42:45 +00:00
Meador Inge 006e0e6531 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.

llvm-svn: 229543
2015-02-17 21:02:56 +00:00
Nico Weber f91435e16d Remove a recovery attempt that was untested and crashed when used.
Found by SLi's bot.

llvm-svn: 229532
2015-02-17 20:09:39 +00:00
Adrian Prantl d268046eef Add a testcase that exercises DIBuilder's handling of cyclic debug info nodes.
rdar://problem/19839612

llvm-svn: 229522
2015-02-17 19:17:56 +00:00
Sergey Matveev 2ba8778157 Append -fno-assume-sane-operator-new in ASan builds.
This should help LSan detect leaks where operator new would otherwise be
optimized out.

llvm-svn: 229498
2015-02-17 15:09:33 +00:00
Manuel Klimek fa27b8861b Make tests independent of llvm variable naming.
llvm-svn: 229484
2015-02-17 09:49:31 +00:00
Craig Topper 96f9a573b5 [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.
llvm-svn: 229474
2015-02-17 07:18:01 +00:00
Alex Denisov 10c4546498 Add more tests for NSArray/NSDictionary literals
llvm-svn: 229470
2015-02-17 06:43:10 +00:00
Craig Topper 480e2b6e43 [X86] Merge the 2 separate builtin handlers for PALIGNR into a single one that handles both.
llvm-svn: 229469
2015-02-17 06:37:58 +00:00
Fariborz Jahanian b0553e21cc [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

llvm-svn: 229458
2015-02-16 23:49:44 +00:00
Aaron Ballman f25731a4b4 Minor tweaks to r229447 to ensure the attribute is properly quoted when diagnosed.
llvm-svn: 229454
2015-02-16 23:12:37 +00:00
Nico Weber c60aa71aa2 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.

llvm-svn: 229449
2015-02-16 22:32:46 +00:00
Saleem Abdulrasool f931a3896e 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.

llvm-svn: 229447
2015-02-16 22:27:01 +00:00
Serge Pavlov 1174cb6549 Regression test for RP6954.
llvm-svn: 229416
2015-02-16 18:27:41 +00:00
Matt Arsenault b8e668a52f Revert r229409: "Hack to try deleting file from build bots"
llvm-svn: 229411
2015-02-16 18:03:59 +00:00
Matt Arsenault 6f8c4cdcf6 Hack to try deleting file from build bots
llvm-svn: 229409
2015-02-16 17:33:12 +00:00
Sanjay Patel eb2af4e8b1 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

llvm-svn: 229408
2015-02-16 17:26:51 +00:00
Matt Arsenault e7f4f86dff Don't create output file in test
llvm-svn: 229407
2015-02-16 17:11:58 +00:00
Matt Arsenault a03280de75 OpenCL: Accept -cl-strict-aliasing
This was in 1.0, but deprecated in 1.1. Accept it and do nothing
for compatability.

llvm-svn: 229403
2015-02-16 16:43:13 +00:00
Alex Denisov e36748a8eb 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.

llvm-svn: 229402
2015-02-16 16:17:05 +00:00
Michael Kuperstein f0e4ccffc5 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

llvm-svn: 229376
2015-02-16 11:57:43 +00:00
Richard Smith 40574cc569 DR1467: If aggregate initialization encounters an initializer list for which
subobject initialization is not possible, be sure to note the overall
initialization as having failed so that overload resolution knows that the
relevant candidate is not viable.

llvm-svn: 229353
2015-02-16 04:42:59 +00:00