| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 229637
|
| |
|
|
|
|
|
| |
Un-parameterize the warning as there is exactly one attribute added in C++14.
Partially addresses post-commit review comments from Richard Smith.
llvm-svn: 229636
|
| |
|
|
| |
llvm-svn: 229617
|
| |
|
|
| |
llvm-svn: 229616
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
-fdefine-sized-deallocation, and from DefaultSizedDelete to DefineSizedDeallocation.
llvm-svn: 229597
|
| |
|
|
| |
llvm-svn: 229593
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r229554.
Reverting this commit for now as several apple internal builds still
rely on this functionality.
llvm-svn: 229582
|
| |
|
|
|
|
|
| |
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.
llvm-svn: 229575
|
| |
|
|
|
|
| |
NFC.
llvm-svn: 229557
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 229554
|
| |
|
|
|
|
| |
Reverting this while build bot failures are investigated.
llvm-svn: 229550
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Found by SLi's bot.
llvm-svn: 229532
|
| |
|
|
|
|
| |
the -target-abi use and those features don't exist anymore.
llvm-svn: 229526
|
| |
|
|
|
|
| |
rdar://problem/19839612
llvm-svn: 229522
|
| |
|
|
| |
llvm-svn: 229510
|
| |
|
|
|
|
| |
Same functionality, but hoists the vector growth out of the loop.
llvm-svn: 229508
|
| |
|
|
|
|
|
| |
This should help LSan detect leaks where operator new would otherwise be
optimized out.
llvm-svn: 229498
|
| |
|
|
| |
llvm-svn: 229486
|
| |
|
|
| |
llvm-svn: 229485
|
| |
|
|
| |
llvm-svn: 229484
|
| |
|
|
|
|
| |
instead of intrinsics. This should allow the instrinsics to removed from the backend.
llvm-svn: 229474
|
| |
|
|
| |
llvm-svn: 229470
|
| |
|
|
|
|
| |
that handles both.
llvm-svn: 229469
|
| |
|
|
|
|
| |
This code is unreachable since its already marked for non-custom handling in llvm's IntrinsicsX86.td file.
llvm-svn: 229468
|
| |
|
|
|
|
|
| |
warning when property getter is used in direct method call
and return value of property is unused. rdar://19773512
llvm-svn: 229458
|
| |
|
|
|
|
| |
diagnosed.
llvm-svn: 229454
|
| |
|
|
| |
llvm-svn: 229450
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 229446
|
| |
|
|
| |
llvm-svn: 229435
|
| |
|
|
|
|
| |
Update for the API change in r229433
llvm-svn: 229434
|
| |
|
|
| |
llvm-svn: 229432
|
| |
|
|
|
|
|
|
| |
flattening of TypeLists.
Building trees of TypeLists is no longer necessary.
llvm-svn: 229429
|
| |
|
|
| |
llvm-svn: 229428
|
| |
|
|
| |
llvm-svn: 229416
|
| |
|
|
| |
llvm-svn: 229411
|
| |
|
|
| |
llvm-svn: 229409
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 229407
|
| |
|
|
| |
llvm-svn: 229404
|
| |
|
|
|
|
|
| |
This was in 1.0, but deprecated in 1.1. Accept it and do nothing
for compatability.
llvm-svn: 229403
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
We still instantiate all the levels but there's no need to create a vtable for
every level in the hierarchy.
llvm-svn: 229401
|
| |
|
|
|
|
| |
not have changed.
llvm-svn: 229394
|
| |
|
|
|
|
|
|
|
| |
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
|