]> granicus.if.org Git - clang/log
clang
7 years agoAMDGPU: export s_waitcnt builtin
Jan Vesely [Sat, 25 Feb 2017 04:20:20 +0000 (04:20 +0000)]
AMDGPU: export s_waitcnt builtin

Differential Revision: https://reviews.llvm.org/D30359

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

7 years agoRevert r296166, "clang-format: Don't leave behind temp files in -i mode on Windows...
NAKAMURA Takumi [Sat, 25 Feb 2017 03:45:49 +0000 (03:45 +0000)]
Revert r296166, "clang-format: Don't leave behind temp files in -i mode on Windows, PR26125", and r296171.

(MemoryBuffer)Code.reset() was too early.

  ==26912== Invalid read of size 1
  ==26912==    at 0x437E1D: llvm::MemoryBuffer::init(char const*, char const*, bool) (MemoryBuffer.cpp:47)
  ==26912==    by 0x438013: (anonymous namespace)::MemoryBufferMem::MemoryBufferMem(llvm::StringRef, bool) (MemoryBuffer.cpp:86)
  ==26912==    by 0x438128: llvm::MemoryBuffer::getMemBuffer(llvm::StringRef, llvm::StringRef, bool) (MemoryBuffer.cpp:112)
  ==26912==    by 0x4E189D: clang::vfs::detail::(anonymous namespace)::InMemoryFileAdaptor::getBuffer(llvm::Twine const&, long, bool, bool) (VirtualFileSystem.cpp:443)
  ==26912==    by 0x4DF5BA: clang::vfs::FileSystem::getBufferForFile(llvm::Twine const&, long, bool, bool) (VirtualFileSystem.cpp:94)
  ==26912==    by 0x4B72EC: clang::FileManager::getBufferForFile(clang::FileEntry const*, bool, bool) (FileManager.cpp:443)
  ==26912==    by 0x4C1F81: clang::SrcMgr::ContentCache::getBuffer(clang::DiagnosticsEngine&, clang::SourceManager const&, clang::SourceLocation, bool*) const (SourceManager.cpp:98)
  ==26912==    by 0x4C50E5: clang::SourceManager::getBufferData(clang::FileID, bool*) const (SourceManager.cpp:689)
  ==26912==    by 0x58E794: clang::Rewriter::getEditBuffer(clang::FileID) (Rewriter.cpp:230)
  ==26912==    by 0x407297: clang::format::format(llvm::StringRef) (ClangFormat.cpp:311)
  ==26912==    by 0x4078D7: main (ClangFormat.cpp:363)

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

7 years agoRevert "[profiling] Fix profile counter increment when emitting selects (PR32019)"
Vedant Kumar [Sat, 25 Feb 2017 02:59:47 +0000 (02:59 +0000)]
Revert "[profiling] Fix profile counter increment when emitting selects (PR32019)"

This reverts commit r296231. It causes an assertion failure on 32-bit
machines

clang: /export/users/atombot/llvm/clang-atom-d525-fedora-rel/llvm/lib/IR/Instructions.cpp:263: void llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*> >, const llvm::Twine&): Assertion `(i >= FTy->getNumParams() || FTy->getParamType(i) == Args[i]->getType()) && "Calling a function with a bad signature!"' failed.
llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/export/users/atombot/llvm/clang-atom-d525-fedora-rel/stage1/./bin/clang+0x1c5fbfa)
llvm::sys::RunSignalHandlers() (/export/users/atombot/llvm/clang-atom-d525-fedora-rel/stage1/./bin/clang+0x1c5dc7e)
SignalHandler(int) (/export/users/atombot/llvm/clang-atom-d525-fedora-rel/stage1/./bin/clang+0x1c5dde2)
__restore_rt (/lib64/libpthread.so.0+0x3f1d00efa0)
__GI_raise /home/glibctest/rpmbuild/BUILD/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
__GI_abort /home/glibctest/rpmbuild/BUILD/glibc-2.17-c758a686/stdlib/abort.c:92:0
__assert_fail_base /home/glibctest/rpmbuild/BUILD/glibc-2.17-c758a686/assert/assert.c:92:0
(/lib64/libc.so.6+0x3f1c82e622)
llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::ArrayRef<llvm::OperandBundleDefT<llvm::Value*> >, llvm::Twine const&) (/export/users/atombot/llvm/clang-atom-d525-fedora-rel/stage1/./bin/clang+0x1804e3a)
clang::CodeGen::CodeGenPGO::emitCounterIncrement(clang::CodeGen::CGBuilderTy&, clang::Stmt const*, llvm::Value*) (/export/users/atombot/llvm/clang-atom-d525-fedora-rel/stage1/./bin/clang+0x1ec7891)

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

7 years ago[profiling] Fix profile counter increment when emitting selects (PR32019)
Vedant Kumar [Sat, 25 Feb 2017 02:30:03 +0000 (02:30 +0000)]
[profiling] Fix profile counter increment when emitting selects (PR32019)

Clang has logic to lower certain conditional expressions directly into
llvm select instructions. However, it does not emit the correct profile
counter increment as it does this: it emits an unconditional increment
of the counter for the 'then branch', even if the value selected is from
the 'else branch' (this is PR32019).

That means, given the following snippet, we would report that "0" is
selected twice, and that "1" is never selected:

  int f1(int x) {
    return x ? 0 : 1;
               ^2  ^0
  }

  f1(0);
  f1(1);

Fix the problem by using the instrprof_increment_step intrinsic to do
the proper increment.

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

7 years ago[ODRHash] Move inherited visitor call to end of function.
Richard Trieu [Sat, 25 Feb 2017 01:29:34 +0000 (01:29 +0000)]
[ODRHash] Move inherited visitor call to end of function.

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

7 years agoRevert r296209, still one more test to go.
Paul Robinson [Sat, 25 Feb 2017 00:50:34 +0000 (00:50 +0000)]
Revert r296209, still one more test to go.

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

7 years ago[ubsan] Detect signed overflow UB in remainder operations
Vedant Kumar [Sat, 25 Feb 2017 00:43:39 +0000 (00:43 +0000)]
[ubsan] Detect signed overflow UB in remainder operations

Teach ubsan to diagnose remainder operations which have undefined
behavior due to signed overflow (e.g INT_MIN % -1).

Differential Revision: https://reviews.llvm.org/D29437

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

7 years ago[ubsan] Omit superflous overflow checks for promoted arithmetic (PR20193)
Vedant Kumar [Sat, 25 Feb 2017 00:43:36 +0000 (00:43 +0000)]
[ubsan] Omit superflous overflow checks for promoted arithmetic (PR20193)

C requires the operands of arithmetic expressions to be promoted if
their types are smaller than an int. Ubsan emits overflow checks when
this sort of type promotion occurs, even if there is no way to actually
get an overflow with the promoted type.

This patch teaches clang how to omit the superflous overflow checks
(addressing PR20193).

Testing: check-clang and check-ubsan.

Differential Revision: https://reviews.llvm.org/D29369

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

7 years ago[PS4] Set our default dialect to C++11. NFC for other targets.
Paul Robinson [Sat, 25 Feb 2017 00:15:45 +0000 (00:15 +0000)]
[PS4] Set our default dialect to C++11. NFC for other targets.

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

7 years ago[ODRHash] Finish FieldDecl support by handling mutable and initializers.
Richard Trieu [Fri, 24 Feb 2017 23:35:37 +0000 (23:35 +0000)]
[ODRHash] Finish FieldDecl support by handling mutable and initializers.

https://reviews.llvm.org/rL296170

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

7 years ago[Test] Make Lit tests C++11 compatible #10
Charles Li [Fri, 24 Feb 2017 23:23:53 +0000 (23:23 +0000)]
[Test] Make Lit tests C++11 compatible #10

Differential Revision: https://reviews.llvm.org/D21626

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

7 years ago[Test] Make Lit tests C++11 compatible #9
Charles Li [Fri, 24 Feb 2017 22:22:05 +0000 (22:22 +0000)]
[Test] Make Lit tests C++11 compatible #9

[Test] Make Lit tests C++11 compatible #9

Differential Revision: https://reviews.llvm.org/D20710

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

7 years agoFactor out more commonality between handling of deletion and exception specifications...
Richard Smith [Fri, 24 Feb 2017 21:18:47 +0000 (21:18 +0000)]
Factor out more commonality between handling of deletion and exception specifications for special member functions.

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

7 years agoTry to unbreak tests after r296166
Nico Weber [Fri, 24 Feb 2017 21:01:43 +0000 (21:01 +0000)]
Try to unbreak tests after r296166

Looks like %T isn't per-test but per-test-directory, and
the rm was deleting temp files written by other tests in
test/Format.  Limit the rm's scope a bit.

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

7 years ago[ODRHash] Add handling of bitfields
Richard Trieu [Fri, 24 Feb 2017 20:59:28 +0000 (20:59 +0000)]
[ODRHash] Add handling of bitfields

Differential Revision: https://reviews.llvm.org/D21675

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

7 years agoclang-format: Don't leave behind temp files in -i mode on Windows, PR26125
Nico Weber [Fri, 24 Feb 2017 20:49:00 +0000 (20:49 +0000)]
clang-format: Don't leave behind temp files in -i mode on Windows, PR26125

Fix and analysis by Wei Mao <weimao1@gmail.com> (see bug), test by me.

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

7 years agoclang-format: Enable include sorting for style=Chromium
Nico Weber [Fri, 24 Feb 2017 19:13:59 +0000 (19:13 +0000)]
clang-format: Enable include sorting for style=Chromium

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

7 years agoclang-format: Fix many Objective-C formatting regressions from r289428
Nico Weber [Fri, 24 Feb 2017 19:10:12 +0000 (19:10 +0000)]
clang-format: Fix many Objective-C formatting regressions from r289428

r289428 added a separate language kind for Objective-C, but kept many
"Language == LK_Cpp" checks untouched.  This introduced a "IsCpp()"
method that returns true for both C++ and Objective-C++, and replaces
all comparisons of Language with LK_Cpp with calls to this new method.

Also add a lot more test coverge for formatting things in LK_ObjC mode,
by having FormatTest's verifyFormat() test for LK_ObjC everything that's
being tested for LK_Cpp at the moment.

Fixes PR32060 and many other things.

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

7 years ago[Preprocessor] Fix incorrect token caching that occurs when lexing _Pragma
Alex Lorenz [Fri, 24 Feb 2017 17:45:16 +0000 (17:45 +0000)]
[Preprocessor] Fix incorrect token caching that occurs when lexing _Pragma
in macro argument pre-expansion mode when skipping a function body

This commit fixes a token caching problem that currently occurs when clang is
skipping a function body (e.g. when looking for a code completion token) and at
the same time caching the tokens for _Pragma when lexing it in macro argument
pre-expansion mode.

When _Pragma is being lexed in macro argument pre-expansion mode, it caches the
tokens so that it can avoid interpreting the pragma immediately (as the macro
argument may not be used in the macro body), and then either backtracks over or
commits these tokens. The problem is that, when we're backtracking/committing in
such a scenario, there's already a previous backtracking position stored in
BacktrackPositions (as we're skipping the function body), and this leads to a
situation where the cached tokens from the pragma (like '(' 'string_literal'
and ')') will remain in the cached tokens array incorrectly even after they're
consumed (in the case of backtracking) or just ignored (in the case when they're
committed). Furthermore, what makes it even worse, is that because of a previous
backtracking position, the logic that deals with when should we call
ExitCachingLexMode in CachingLex no longer works for us in this situation, and
more tokens in the macro argument get cached, to the point where the EOF token
that corresponds to the macro argument EOF is cached. This problem leads to all
sorts of issues in code completion mode, where incorrect errors get presented
and code completion completely fails to produce completion results.

rdar://28523863

Differential Revision: https://reviews.llvm.org/D28772

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

7 years agoMade test more target agnostic
Serge Pavlov [Fri, 24 Feb 2017 13:15:08 +0000 (13:15 +0000)]
Made test more target agnostic

Recommits r295975 (Added regression tests), reverted in r295975,
because it did not work on non-X86 targets.

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

7 years agoFix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
Roger Ferrer Ibanez [Fri, 24 Feb 2017 08:41:09 +0000 (08:41 +0000)]
Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier

Fix an assertion that is hit when a redeclaration with differing types only
differs in the unaligned type-qualifier.

Differential Revision: https://reviews.llvm.org/D29986

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

7 years agoAdd clazy to external Clang examples page
Kevin Funk [Fri, 24 Feb 2017 08:29:46 +0000 (08:29 +0000)]
Add clazy to external Clang examples page

Reviewers: silvas, rizsotto.mailinglist, sergio.martins

Reviewed By: rizsotto.mailinglist

Differential Revision: https://reviews.llvm.org/D30252

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

7 years ago[Driver] Enable SafeStack for Fuchsia targets
Petr Hosek [Fri, 24 Feb 2017 03:17:41 +0000 (03:17 +0000)]
[Driver] Enable SafeStack for Fuchsia targets

The runtime support is provided directly by the Fuchsia system C
library.

Patch by Roland McGrath

Differential Revision: https://reviews.llvm.org/D30238

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

7 years ago[ODRHash] Add handling of TypedefType and DeclarationName
Richard Trieu [Fri, 24 Feb 2017 02:59:12 +0000 (02:59 +0000)]
[ODRHash] Add handling of TypedefType and DeclarationName

Differential Revision: https://reviews.llvm.org/D21675

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

7 years agoRepresent pass_object_size attrs in ExtParameterInfo
George Burgess IV [Fri, 24 Feb 2017 02:49:47 +0000 (02:49 +0000)]
Represent pass_object_size attrs in ExtParameterInfo

The goal of this is to fix a bug in modules where we'd merge
FunctionDecls that differed in their pass_object_size attributes. Since
we can overload on the presence of pass_object_size attributes, this
behavior is incorrect.

We don't represent `N` in `pass_object_size(N)` as part of
ExtParameterInfo, since it's an error to overload solely on the value of
N. This means that we have a bug if we have two modules that declare
functions that differ only in their pass_object_size attrs, like so:

// In module A, from a.h
void foo(char *__attribute__((pass_object_size(0))));

// In module B, from b.h
void foo(char *__attribute__((pass_object_size(1))));

// In module C, in main.c
#include "a.h"
#include "b.h"

At the moment, we'll merge the foo decls, when we should instead emit a
diagnostic about an invalid overload. We seem to have similar (silent)
behavior if we overload only on the return type of `foo` instead; I'll
try to find a good place to put a FIXME (or I'll just file a bug) soon.

This patch also fixes a bug where we'd not output the proper extended
parameter info for declarations with pass_object_size attrs.

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

7 years agoFactor out some common code between SpecialMemberExceptionSpecInfo and SpecialMemberD...
Richard Smith [Fri, 24 Feb 2017 02:07:20 +0000 (02:07 +0000)]
Factor out some common code between SpecialMemberExceptionSpecInfo and SpecialMemberDeletionInfo.

To simplify this, convert SpecialMemberOverloadResult to a value type.

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

7 years agoSimplify and pass a more useful source location when computing an exception
Richard Smith [Fri, 24 Feb 2017 01:36:58 +0000 (01:36 +0000)]
Simplify and pass a more useful source location when computing an exception
specification for an implicit special member.

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

7 years agoRefactor computation of exception specification for special members to remove
Richard Smith [Fri, 24 Feb 2017 01:29:42 +0000 (01:29 +0000)]
Refactor computation of exception specification for special members to remove
some of the repetition.

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

7 years agoRecently a change was made to this test in r294639 which fails when the
Douglas Yung [Fri, 24 Feb 2017 01:25:02 +0000 (01:25 +0000)]
Recently a change was made to this test in r294639 which fails when the
compiler is run in a mode where the default C++ standard is newer than C++03.
The reason is because one of the warnings checked is only produced when the
compiler is using C++03 or lower.

This change fixes this problem as well as adds explicit run lines to run the
test in C++03 and C++11 modes.

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

7 years agoRevert r291477 "[Frontend] Correct values of ATOMIC_*_LOCK_FREE to match builtin"
Hans Wennborg [Fri, 24 Feb 2017 01:16:34 +0000 (01:16 +0000)]
Revert r291477 "[Frontend] Correct values of ATOMIC_*_LOCK_FREE to match builtin"

It caused PR31864. There is a patch in progress to fix that, but let's
revert in the meantime.

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

7 years ago[profiling] PR31992: Don't skip interesting non-base constructors
Vedant Kumar [Fri, 24 Feb 2017 01:15:19 +0000 (01:15 +0000)]
[profiling] PR31992: Don't skip interesting non-base constructors

Fix the fact that we don't assign profile counters to constructors in
classes with virtual bases, or constructors with variadic parameters.

Differential Revision: https://reviews.llvm.org/D30131

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

7 years ago[Driver] Move architecture-specific free helper functions to their own files.
David L. Jones [Fri, 24 Feb 2017 00:28:01 +0000 (00:28 +0000)]
[Driver] Move architecture-specific free helper functions to their own files.

This patch moves helper functions that are CPU-specific out of Driver.cpp and to
separate implementation files. The new files are named for the architecture,
e.g. ARMArch.cpp.

The next step after this will be to move OS-specific code, which I expect will
include many of the tool implementations, to similarly separate files.

Some CPU-specific functions are not being moved just yet. In cases where the
only caller is the platform-specific tools, I plan to move them together. An
example is Hexagon, where the only caller of the architecture-specific functions
are the tools themselves. (I'm happy to revise this choice, it just seems like
less churn to me.)

This does mean that some functions which were previously static are now exposed
through the library header Driver.h.

Reviewers: rsmith, javed.absar

Subscribers: aemerson, danalbert, srhines, dschuff, jyknight, nemanjai, mgorny, cfe-commits

Differential Revision: https://reviews.llvm.org/D30315

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

7 years agoNFC, Remove commented out block of code from CGBlocks.cpp
Alex Lorenz [Fri, 24 Feb 2017 00:21:20 +0000 (00:21 +0000)]
NFC, Remove commented out block of code from CGBlocks.cpp

This is a preparation clean-up commit around the code that emits
block copy/dispose routines.

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

7 years agoNFC, Add a test that ensures that we don't emit helper code in copy/dispose
Alex Lorenz [Fri, 24 Feb 2017 00:09:30 +0000 (00:09 +0000)]
NFC, Add a test that ensures that we don't emit helper code in copy/dispose
routines for objects that are captured with the __unsafe_unretained
ownership qualifier

This is a preparation commit that improves code-coverage in code that emits
block copy/dispose routines.

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

7 years agoNFC, Add a test that ensure that we don't emit helper code in copy/dispose
Alex Lorenz [Thu, 23 Feb 2017 23:41:50 +0000 (23:41 +0000)]
NFC, Add a test that ensure that we don't emit helper code in copy/dispose
routines for variables that are const-captured

This is a preparation commit that improves code-coverage in code that emits
block copy/dispose routines.

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

7 years ago[CodeGen] Silence unused variable warning in Release builds.
Benjamin Kramer [Thu, 23 Feb 2017 22:47:56 +0000 (22:47 +0000)]
[CodeGen] Silence unused variable warning in Release builds.

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

7 years agoPR32044: Fix some cases where we would confuse a transparent init-list expression...
Richard Smith [Thu, 23 Feb 2017 22:41:47 +0000 (22:41 +0000)]
PR32044: Fix some cases where we would confuse a transparent init-list expression with an aggregate init.

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

7 years agoTighten up a regex in a test
George Burgess IV [Thu, 23 Feb 2017 22:14:55 +0000 (22:14 +0000)]
Tighten up a regex in a test

...If we're trying to match "this function has only two arguments", `.*`
probably isn't the best thing to use. :)

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

7 years ago[CodeGen] Fix ExtParameterInfo bugs in C++ CodeGen code.
George Burgess IV [Thu, 23 Feb 2017 22:07:35 +0000 (22:07 +0000)]
[CodeGen] Fix ExtParameterInfo bugs in C++ CodeGen code.

This patch makes use of the prefix/suffix ABI argument distinction that
was introduced in r295870, so that we now emit ExtParameterInfo at the
correct offset for member calls that have added ABI arguments. I don't
see a good way to test the generated param info, since we don't actually
seem to use it in CGFunctionInfo outside of Swift. Any
suggestions/thoughts for how to better test this are welcome. :)

This patch also fixes a small bug with inheriting constructors: if we
decide not to pass args into an base class ctor, we would still
generate ExtParameterInfo as though we did. The added test-case is for
that behavior.

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

7 years agoAdd context note to diagnostics that occur while declaring an implicit special member...
Richard Smith [Thu, 23 Feb 2017 21:43:43 +0000 (21:43 +0000)]
Add context note to diagnostics that occur while declaring an implicit special member function.

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

7 years ago[ObjC][CodeGen] CodeGen support for @available.
Erik Pilkington [Thu, 23 Feb 2017 21:08:08 +0000 (21:08 +0000)]
[ObjC][CodeGen] CodeGen support for @available.

CodeGens uses of @available into calls to the compiler-rt function
__isOSVersionAtLeast.

This commit is part of a feature that I proposed here:
http://lists.llvm.org/pipermail/cfe-dev/2016-July/049851.html

Differential revision: https://reviews.llvm.org/D27827

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

7 years agoReverted r295975
Serge Pavlov [Thu, 23 Feb 2017 15:10:45 +0000 (15:10 +0000)]
Reverted r295975

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

7 years agoAdded regression tests
Serge Pavlov [Thu, 23 Feb 2017 14:34:04 +0000 (14:34 +0000)]
Added regression tests

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

7 years ago[CodeGen] Don't reemit expressions for pass_object_size params.
George Burgess IV [Thu, 23 Feb 2017 05:59:56 +0000 (05:59 +0000)]
[CodeGen] Don't reemit expressions for pass_object_size params.

This fixes an assertion failure in cases where we had expression
statements that declared variables nested inside of pass_object_size
args. Since we were emitting the same ExprStmt twice (once for the arg,
once for the @llvm.objectsize call), we were getting issues with
redefining locals.

This also means that we can be more lax about when we emit
@llvm.objectsize for pass_object_size args: since we're reusing the
arg's value itself, we don't have to care so much about side-effects.

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

7 years ago[c-index-test] For the 'core' invocation, avoid running it under a new thread.
Argyrios Kyrtzidis [Thu, 23 Feb 2017 05:51:47 +0000 (05:51 +0000)]
[c-index-test] For the 'core' invocation, avoid running it under a new thread.

It's unnecessary.

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

7 years ago[ODRHash] Handle types in ODR hashing.
Richard Trieu [Thu, 23 Feb 2017 03:25:57 +0000 (03:25 +0000)]
[ODRHash] Handle types in ODR hashing.

Fields will now have their types added to the hash, allowing for detection of
mismatched field types.  This detection allows the existing ODR checking to
produce the correct message.

Differential Revision: https://reviews.llvm.org/D21675

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

7 years agoFix tracking of whether the previous template instantiation stack matches the current...
Richard Smith [Thu, 23 Feb 2017 02:09:03 +0000 (02:09 +0000)]
Fix tracking of whether the previous template instantiation stack matches the current one.

Rather than attempting to compare whether the previous and current top of
context stack are "equal" (which fails for a number of reasons, such as the
context stack entries containing pointers to objects on the stack, or reaching
the same "top of stack" entry through two different paths), track the depth of
context stack at which we last emitted a note and invalidate it when we pop the
context stack to less than that depth.

This causes us to emit some missing "in instantiation of" notes and to stop
emitting redundant "in instantiation of" stacks matching the previous stack in
rare cases.

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

7 years agoRename ActiveTemplateInstantiation to CodeSynthesisContext in preparation for
Richard Smith [Thu, 23 Feb 2017 01:43:54 +0000 (01:43 +0000)]
Rename ActiveTemplateInstantiation to CodeSynthesisContext in preparation for
using it for other kinds of context (where we currently produce context notes
in a highly ad-hoc manner).

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

7 years agoRename a helper function, NFC.
Vedant Kumar [Thu, 23 Feb 2017 01:22:38 +0000 (01:22 +0000)]
Rename a helper function, NFC.

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

7 years ago[ODRHash] Add IdentiferInfo and FieldDecl support.
Richard Trieu [Thu, 23 Feb 2017 00:23:01 +0000 (00:23 +0000)]
[ODRHash] Add IdentiferInfo and FieldDecl support.

IdentifierInfo is hashed based on the stored string.  FieldDecl versus other
Decl is now detected, as well as differently named fields.

Differential Revision: https://reviews.llvm.org/D21675

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

7 years ago[ObjC][Modules] Don't perform property lookup in hidden class extensions
Alex Lorenz [Wed, 22 Feb 2017 23:18:49 +0000 (23:18 +0000)]
[ObjC][Modules] Don't perform property lookup in hidden class extensions

rdar://30603803

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

7 years ago[CodeGen] Add param info for ctors with ABI args.
George Burgess IV [Wed, 22 Feb 2017 22:38:25 +0000 (22:38 +0000)]
[CodeGen] Add param info for ctors with ABI args.

This fixes a few assertion failures. Please see the added test case.

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

7 years ago[ODRHash] static_cast and Stmt hashing.
Richard Trieu [Wed, 22 Feb 2017 22:22:42 +0000 (22:22 +0000)]
[ODRHash] static_cast and Stmt hashing.

Add support for static_cast in classes.  Add pointer-independent profiling for
Stmt's, sharing most of the logic with Stmt::Profile.  This is the first of the
deep sub-Decl diffing for error messages.

Differential Revision: https://reviews.llvm.org/D21675

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

7 years agoPR32034: Evaluate _Atomic(T) in-place when T is a class or array type.
Richard Smith [Wed, 22 Feb 2017 22:09:50 +0000 (22:09 +0000)]
PR32034: Evaluate _Atomic(T) in-place when T is a class or array type.

This is necessary in order for the evaluation of an _Atomic initializer for
those types to have an associated object, which an initializer for class or
array type needs.

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

7 years agoAMDGPU: Add fmed3 half builtin
Matt Arsenault [Wed, 22 Feb 2017 20:55:59 +0000 (20:55 +0000)]
AMDGPU: Add fmed3 half builtin

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

7 years agostop using associative comdats for SEH filter functions
Bob Haarman [Wed, 22 Feb 2017 20:29:39 +0000 (20:29 +0000)]
stop using associative comdats for SEH filter functions

Summary: We implement structured exception handling (SEH) by generating filter functions for functions that use exceptions. Currently, we use associative comdats to ensure that the filter functions are preserved if and only if the functions we generated them for are preserved. This can lead to problems when generating COFF objects - LLVM may decide to inline a function that uses SEH and remove its body, at which point we will end up with a comdat that COFF cannot represent. To avoid running into that situation, this change makes us not use associative comdats for SEH filter functions. We can still get the benefits we used the associative comdats for: we will always preserve filter functions we use, and dead stripping can eliminate the ones we don't use.

Reviewers: rnk, pcc, ruiu

Reviewed By: rnk

Differential Revision: https://reviews.llvm.org/D30117

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

7 years ago[CodeGen] Note where we add ABI-specific args in ctors. NFC.
George Burgess IV [Wed, 22 Feb 2017 20:28:02 +0000 (20:28 +0000)]
[CodeGen] Note where we add ABI-specific args in ctors. NFC.

Meta: The ultimate goal is to teach ExtParameterInfo about
pass_object_size attributes. This is necessary for that, since our
ExtParameterInfo is a bit buggy in C++. I plan to actually make use of
this Prefix/Suffix info in the near future, but I like small
single-purpose changes. Especially when those changes are hard to
actually test...

At the moment, some of our C++-specific CodeGen pretends that ABIs can
only add arguments to the beginning of a function call. This isn't quite
correct: args can be appended to the end, as well. It hasn't mattered
much until now, since we seem to only use this "number of arguments
added" data when calculating the ExtParameterInfo to use when making a
CGFunctionInfo. Said ExtParameterInfo is currently only used for
ParameterABIs (Swift) and ns_consumed (ObjC).

So, this patch allows ABIs to indicate whether args they added were at
the beginning or end of an argument list. We can use this information to
emit ExtParameterInfos more correctly, though like said, that bit is
coming soon.

No tests since this is theoretically a nop.

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

7 years agoImprove support for 'decltype(auto)' in template template parameter matching.
Richard Smith [Wed, 22 Feb 2017 20:01:55 +0000 (20:01 +0000)]
Improve support for 'decltype(auto)' in template template parameter matching.

A 'decltype(auto)' parameter can match any other kind of non-type template
parameter, so should be usable in place of any other parameter in a template
template argument. The standard is sadly extremely unclear on how this is
supposed to work, but this seems like the obviously-correct result.

It's less clear whether an 'auto' parameter should be able to match
'decltype(auto)', since the former cannot be used if the latter turns out to be
used for a reference type, but if we disallow that then consistency suggests we
should also disallow 'auto' matching 'T' for the same reason, defeating
intended use cases of the feature.

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

7 years ago[OpenCL] r600 needs OpenCL kernel calling convention
Jan Vesely [Wed, 22 Feb 2017 15:01:42 +0000 (15:01 +0000)]
[OpenCL] r600 needs OpenCL kernel calling convention

Differential Revision: https://reviews.llvm.org/D30236

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

7 years agoRemove superfluous initializer.
Yaron Keren [Wed, 22 Feb 2017 14:32:39 +0000 (14:32 +0000)]
Remove superfluous initializer.
The following fully-covered switch either sets value to External or exits the function.

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

7 years agoFix 'control reaches end of non-void function' warning
Simon Pilgrim [Wed, 22 Feb 2017 13:21:24 +0000 (13:21 +0000)]
Fix 'control reaches end of non-void function' warning

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

7 years agoFix -Wunused-private-field warning by removing unused ODRHash reference field from...
Simon Pilgrim [Wed, 22 Feb 2017 13:19:24 +0000 (13:19 +0000)]
Fix -Wunused-private-field warning by removing unused ODRHash reference field from ODRDeclVisitor

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

7 years ago[ODRHash] Avoid dereferencing end() of a SmallVector.
Benjamin Kramer [Wed, 22 Feb 2017 10:19:45 +0000 (10:19 +0000)]
[ODRHash] Avoid dereferencing end() of a SmallVector.

Found by MSAN.

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

7 years ago[OpenMP] Generate better diagnostics for cancel and cancellation point
Jonas Hahnfeld [Wed, 22 Feb 2017 06:49:10 +0000 (06:49 +0000)]
[OpenMP] Generate better diagnostics for cancel and cancellation point

checkNestingOfRegions uses CancelRegion to determine whether cancel and
cancellation point are valid in the given nesting. This leads to unuseful
diagnostics if CancelRegion is invalid. The given test case has produced:
  region cannot be closely nested inside 'parallel' region

As a solution, introduce checkCancelRegion and call it first to get the
expected error:
  one of 'for', 'parallel', 'sections' or 'taskgroup' is expected

Differential Revision: https://reviews.llvm.org/D30135

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

7 years agoCall the correct @llvm.objectsize.
George Burgess IV [Wed, 22 Feb 2017 02:35:51 +0000 (02:35 +0000)]
Call the correct @llvm.objectsize.

The following code would crash clang:

void foo(unsigned *const __attribute__((pass_object_size(0))));
void bar(unsigned *i) { foo(i); }

This is because we were always selecting the version of
`@llvm.objectsize` that takes an i8* in CodeGen. Passing an i32* as an
i8* makes LLVM very unhappy.

(Yes, I'm surprised that this remained uncaught for so long, too. :) )

As an added bonus, we'll now also use the appropriate address space when
emitting @llvm.objectsize calls.

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

7 years agoAdd more ODR checking.
Richard Trieu [Wed, 22 Feb 2017 01:11:25 +0000 (01:11 +0000)]
Add more ODR checking.

Add the basics for the ODRHash class, which will only process Decl's from
a whitelist, which currently only has AccessSpecDecl.  Different access
specifiers in merged classes can now be detected.

Differential Revision: https://reviews.llvm.org/D21675

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

7 years agoFix assertion failure when generating debug information for a variable
Richard Smith [Wed, 22 Feb 2017 00:13:14 +0000 (00:13 +0000)]
Fix assertion failure when generating debug information for a variable
declaration declared using class template argument deduction.

Patch by Eric Fiselier (who is busy and asked me to commit this on his behalf)!

Differential Revision: https://reviews.llvm.org/D30082

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

7 years ago[c++1z] Mark constexpr lambdas as done on status page and start advertising
Richard Smith [Tue, 21 Feb 2017 23:58:29 +0000 (23:58 +0000)]
[c++1z] Mark constexpr lambdas as done on status page and start advertising
them via feature test macro __cpp_constexpr.

Thanks to Faisal for implementing this feature!

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

7 years agoFix deduction of type of pack-expanded non-type template parameter.
Richard Smith [Tue, 21 Feb 2017 23:49:18 +0000 (23:49 +0000)]
Fix deduction of type of pack-expanded non-type template parameter.

We need to look through the PackExpansionType in the parameter type when
deducing, and we need to consider the possibility of deducing arguments for
packs that are not lexically mentioned in the pattern (but are nonetheless
deducible) when figuring out which packs are covered by a pack deduction scope.

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

7 years agoHook up OpenBSD AArch64 support
Brad Smith [Tue, 21 Feb 2017 23:13:09 +0000 (23:13 +0000)]
Hook up OpenBSD AArch64 support

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

7 years agoDeclare lgamma library builtins as never being const
Jacob Gravelle [Tue, 21 Feb 2017 22:37:27 +0000 (22:37 +0000)]
Declare lgamma library builtins as never being const

Summary:
POSIX requires lgamma writes to an external global variable, signgam.
This prevents annotating lgamma with readnone, which is incorrect on
targets that write to signgam.

Reviewers: efriedma, rsmith

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D29778

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

7 years agoFix for pr31836 - pp_nonportable_path on absolute paths: broken delimiters
Taewook Oh [Tue, 21 Feb 2017 22:30:55 +0000 (22:30 +0000)]
Fix for pr31836 - pp_nonportable_path on absolute paths: broken delimiters

Summary: This is a patch for PR31836. As the bug replaces the path separators in the included file name with the characters following them, the test script makes sure that there's no "Ccase-insensitive-include-pr31836.h" in the warning message.

Reviewers: rsmith, eric_niebler

Reviewed By: eric_niebler

Subscribers: karies, cfe-commits

Differential Revision: https://reviews.llvm.org/D30000

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

7 years ago[XRay] Merge xray clang flag tests, and add powerpc64le.
Tim Shen [Tue, 21 Feb 2017 22:30:00 +0000 (22:30 +0000)]
[XRay] Merge xray clang flag tests, and add powerpc64le.

Summary: I'm not sure why they were in different files, but it's kind of harder to maintain. I create this patch partially for initiate a discussion.

Reviewers: dberris

Subscribers: nemanjai, cfe-commits

Differential Revision: https://reviews.llvm.org/D30118

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

7 years agoOnly enable AddDiscriminator pass when -fdebug-info-for-profiling is true
Dehao Chen [Tue, 21 Feb 2017 20:36:21 +0000 (20:36 +0000)]
Only enable AddDiscriminator pass when -fdebug-info-for-profiling is true

Summary: AddDiscriminator pass is only useful for sample pgo. This patch restricts AddDiscriminator to -fdebug-info-for-profiling so that it does not introduce unecessary debug size increases for non-sample-pgo builds.

Reviewers: dblaikie, aprantl

Reviewed By: dblaikie

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D30220

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

7 years agoFix copy and paste mistake in header comment, NFC.
Erik Pilkington [Tue, 21 Feb 2017 20:31:01 +0000 (20:31 +0000)]
Fix copy and paste mistake in header comment, NFC.

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

7 years ago[mips] Define macros related to -mabicalls in the preprocessor
Simon Dardis [Tue, 21 Feb 2017 16:01:00 +0000 (16:01 +0000)]
[mips] Define macros related to -mabicalls in the preprocessor

Summary:
Historically, NetBSD, FreeBSD and OpenBSD have defined the macro ABICALLS in
the preprocessor when -mabicalls is in effect.

Mainline GCC later defined __mips_abicalls when -mabicalls is in effect.

This patch teaches the preprocessor to define these macros when appropriate.

NetBSD does not require the ABICALLS macro.

This resolves PR/31694.

Thanks to Sean Bruno for highlighting this issue!

Reviewers: slthakur, seanbruno

Reviewed By: seanbruno

Subscribers: joerg, brad, emaste, seanbruno, cfe-commits

Differential Revision: https://reviews.llvm.org/D29032

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

7 years ago[clang-format] Remove unused member variables from BreakableToken
Krasimir Georgiev [Tue, 21 Feb 2017 10:54:50 +0000 (10:54 +0000)]
[clang-format] Remove unused member variables from BreakableToken

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

7 years agoFix lookup through injected-class-names in implicit deduction guides in the
Richard Smith [Tue, 21 Feb 2017 08:42:39 +0000 (08:42 +0000)]
Fix lookup through injected-class-names in implicit deduction guides in the
case where the class template has a parameter pack.

Checking of the template arguments expects an "as-written" template argument
list, which in particular does not have any parameter packs. So flatten the
packs into separate arguments before passing them in.

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

7 years agoWhen deducing an array bound from the length of an initializer list, don't
Richard Smith [Tue, 21 Feb 2017 07:22:31 +0000 (07:22 +0000)]
When deducing an array bound from the length of an initializer list, don't
assume the bound has a non-dependent integral type.

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

7 years agoPR32010: Fix template argument depth mixup when forming implicit constructor
Richard Smith [Tue, 21 Feb 2017 06:30:38 +0000 (06:30 +0000)]
PR32010: Fix template argument depth mixup when forming implicit constructor
template deduction guides for class template argument deduction.

Ensure that we have a local instantiation scope for tracking the instantiated
parameters. Additionally, unusually, we're substituting at depth 1 and leaving
depth 0 alone; make sure that we don't reduce template parameter depth by 2 for
inner parameters in the process. (This is probably also broken for alias
templates in the case where they're expanded within a dependent context, but
this patch doesn't fix that.)

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

7 years agoAdd template parameter depth and index to -ast-dump output.
Richard Smith [Tue, 21 Feb 2017 02:04:03 +0000 (02:04 +0000)]
Add template parameter depth and index to -ast-dump output.

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

7 years agoFactor out function to determine whether we're performing a template
Richard Smith [Tue, 21 Feb 2017 01:17:38 +0000 (01:17 +0000)]
Factor out function to determine whether we're performing a template
instantiation.

In preparation for converting the template stack to a more general context
stack (so we can include context notes for other kinds of context).

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

7 years agoSema: use PropertyDecl for property selector
Saleem Abdulrasool [Mon, 20 Feb 2017 23:45:49 +0000 (23:45 +0000)]
Sema: use PropertyDecl for property selector

Using the constructed name for the class properties with dot syntax may
yield an inappropriate selector (i.e. if it is specified via property
attributes).  Prefer the declaration for the selector, falling back to
the constructed name otherwise.

Patch by David Herzka!

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

7 years ago[Sema][ObjC] perform-selector ARC check should see @selector in parens
Alex Lorenz [Mon, 20 Feb 2017 17:55:15 +0000 (17:55 +0000)]
[Sema][ObjC] perform-selector ARC check should see @selector in parens

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

7 years agoclang-format: [JS] Improve line-wrapping behavior of template strings.
Daniel Jasper [Mon, 20 Feb 2017 14:51:16 +0000 (14:51 +0000)]
clang-format: [JS] Improve line-wrapping behavior of template strings.

Specifically, similar to other blocks, clang-format now wraps both
after "${" and before the corresponding "}", if the contained
expression spans multiple lines.

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

7 years agoclang-format: Prevent weird line-wraps in complex lambda introducers
Daniel Jasper [Mon, 20 Feb 2017 12:43:48 +0000 (12:43 +0000)]
clang-format: Prevent weird line-wraps in complex lambda introducers

Before:
  aaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
      [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]() -> ::std::
  unordered_set<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa> {
    //
  });

After:
  aaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(
      [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]()
  -> ::std::unordered_set<
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa> {
//
      });

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

7 years agoclang-format: [JS/TS] Improve detection for array subscripts in types.
Daniel Jasper [Mon, 20 Feb 2017 12:43:41 +0000 (12:43 +0000)]
clang-format: [JS/TS] Improve detection for array subscripts in types.

Before:
  var someValue = (v as aaaaaaaaaaaaaaaaaaaa<T>[
                  ]).someFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);

After:
  var someValue = (v as aaaaaaaaaaaaaaaaaaaa<T>[])
                      .someFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);

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

7 years ago[ASTImporter] Support default argument initialization of ParmVarDecls
Aleksei Sidorin [Mon, 20 Feb 2017 11:57:12 +0000 (11:57 +0000)]
[ASTImporter] Support default argument initialization of ParmVarDecls

Patch by Peter Szecsi!

Differential Revision: https://reviews.llvm.org/D29612

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

7 years ago[ARM] Add regression tests for Cortex-M23 and Cortex-M33
Sanne Wouda [Mon, 20 Feb 2017 10:37:01 +0000 (10:37 +0000)]
[ARM] Add regression tests for Cortex-M23 and Cortex-M33

Reviewers: rengolin, t.p.northover

Reviewed By: t.p.northover

Subscribers: aemerson, llvm-commits

Differential Revision: https://reviews.llvm.org/D30100

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

7 years ago[analyzer] Do not duplicate call graph nodes for functions that have definition and...
Aleksei Sidorin [Mon, 20 Feb 2017 09:16:48 +0000 (09:16 +0000)]
[analyzer] Do not duplicate call graph nodes for functions that have definition and forward declaration

Patch by Ivan Sidorenko!

Differential Revision: https://reviews.llvm.org/D29643

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

7 years agoEnable support for __float128 in Clang on OpenBSD/X86
Brad Smith [Mon, 20 Feb 2017 03:18:15 +0000 (03:18 +0000)]
Enable support for __float128 in Clang on OpenBSD/X86

/usr/local/include/c++/4.9.4/type_traits:279:39: error: __float128 is not
supported on this target

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

7 years agoDriver: inline a single caller of a function (NFC)
Saleem Abdulrasool [Sun, 19 Feb 2017 21:50:40 +0000 (21:50 +0000)]
Driver: inline a single caller of a function (NFC)

Inline the addCompilerRT call to the single caller.  NFC.

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

7 years agoAlways use --eh-frame-hdr on OpenBSD, even for -static
Brad Smith [Sun, 19 Feb 2017 20:11:48 +0000 (20:11 +0000)]
Always use --eh-frame-hdr on OpenBSD, even for -static

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

7 years agoLink static PIE programs against rcrt0.o on OpenBSD
Brad Smith [Sun, 19 Feb 2017 19:33:26 +0000 (19:33 +0000)]
Link static PIE programs against rcrt0.o on OpenBSD

Patch by Stefan Kempf.

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

7 years ago[CUDA] Don't pass -stack-protector to NVPTX compilations.
Justin Lebar [Sun, 19 Feb 2017 19:05:32 +0000 (19:05 +0000)]
[CUDA] Don't pass -stack-protector to NVPTX compilations.

We can't support stack-protector on NVPTX because NVPTX doesn't expose a
stack to the compiler!

Fixes PR32009.

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

7 years agoclang/CMakeLists.txt: Rework r294954 -- use file(TO_CMAKE_PATH).
NAKAMURA Takumi [Sun, 19 Feb 2017 03:17:31 +0000 (03:17 +0000)]
clang/CMakeLists.txt: Rework r294954 -- use file(TO_CMAKE_PATH).

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

7 years ago[X86][XOP] Fix type conversion warning in vpcmov generic implementations.
Simon Pilgrim [Sat, 18 Feb 2017 23:47:34 +0000 (23:47 +0000)]
[X86][XOP] Fix type conversion warning in vpcmov generic implementations.

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

7 years ago[X86] Replace XOP vpcmov builtins with native vector logical operations.
Craig Topper [Sat, 18 Feb 2017 21:15:30 +0000 (21:15 +0000)]
[X86] Replace XOP vpcmov builtins with native vector logical operations.

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

7 years agoAMDGPU: Add gfx900 and gfx901 processors
Matt Arsenault [Sat, 18 Feb 2017 19:02:41 +0000 (19:02 +0000)]
AMDGPU: Add gfx900 and gfx901 processors

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

7 years ago[analyzer] Revert 295545. There are buildbot failures.
Daniel Marjamaki [Sat, 18 Feb 2017 16:31:35 +0000 (16:31 +0000)]
[analyzer] Revert 295545. There are buildbot failures.

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