]> granicus.if.org Git - clang/log
clang
8 years agoPR28438: Update the information on an identifier with local definitions before
Richard Smith [Thu, 18 Aug 2016 01:16:55 +0000 (01:16 +0000)]
PR28438: Update the information on an identifier with local definitions before
trying to write out its macro graph, in case we imported a module that added
another module macro between the most recent local definition and the end of
the module.

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

8 years agoPrint the module format in clang -module-file-info.
Adrian Prantl [Wed, 17 Aug 2016 23:14:00 +0000 (23:14 +0000)]
Print the module format in clang -module-file-info.

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

8 years agoSupport object-file-wrapped modules in clang -module-file-info.
Adrian Prantl [Wed, 17 Aug 2016 23:13:53 +0000 (23:13 +0000)]
Support object-file-wrapped modules in clang -module-file-info.

rdar://problem/24504815

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

8 years ago[OpenMP] Sema and parsing for 'teams distribute simd’ pragma
Kelvin Li [Wed, 17 Aug 2016 23:13:03 +0000 (23:13 +0000)]
[OpenMP] Sema and parsing for 'teams distribute simd’ pragma

This patch is to implement sema and parsing for 'teams distribute simd’ pragma.

This patch is originated by Carlo Bertolli.

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

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

8 years ago[Darwin] Stop linking libclang_rt.eprintf.a
Chris Bieneman [Wed, 17 Aug 2016 21:54:30 +0000 (21:54 +0000)]
[Darwin] Stop linking libclang_rt.eprintf.a

Summary:
The eprintf library was added before the general OS X builtins library existed as a place to store one builtin function. Since we have for several years had an actual mandated builtin library for OS X > 10.5, we should just merge eprintf into the main library.

This change will resolve PR28855.

As a follow up I'll also patch compiler-rt to not generate the eprintf library anymore.

Reviewers: ddunbar, bob.wilson

Subscribers: cfe-commits

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

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

8 years ago[CMake] Adding toolchain targets to PGO and Apple CMake caches
Chris Bieneman [Wed, 17 Aug 2016 21:51:38 +0000 (21:51 +0000)]
[CMake] Adding toolchain targets to PGO and Apple CMake caches

The Xcode toolchain targets are useful on OS X hosts because you can construct and install multiple toolchians that can be used seamlessly.

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

8 years agoAdd test missed from r278983.
Richard Smith [Wed, 17 Aug 2016 21:42:10 +0000 (21:42 +0000)]
Add test missed from r278983.

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

8 years agoPR18417: Increase -ftemplate-depth to the value 1024 recommended by the C++
Richard Smith [Wed, 17 Aug 2016 21:41:45 +0000 (21:41 +0000)]
PR18417: Increase -ftemplate-depth to the value 1024 recommended by the C++
standard's Annex B. We now attempt to increase the process's stack rlimit to
8MiB on startup, which appears to be enough to allow this to work reliably.
(And if it turns out not to be, we can investigate increasing it further.)

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

8 years agoRevert "[Tooling] Parse compilation database command lines on Windows."
Zachary Turner [Wed, 17 Aug 2016 20:55:35 +0000 (20:55 +0000)]
Revert "[Tooling] Parse compilation database command lines on Windows."

This reverts commit 27a874790fc79f6391ad3703d7c790f51ac6ae1f.

After the introduction of windows command line parsing, some unit tests
began failing that expect to test gnu style command line quirks.  The
fix is mechanical but time consuming, so revert this for now.

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

8 years ago[OpenCL] AMDGPU: add support of cl_khr_subgroups
Yaxun Liu [Wed, 17 Aug 2016 20:39:49 +0000 (20:39 +0000)]
[OpenCL] AMDGPU: add support of cl_khr_subgroups

Patch by Aaron En Ye Shi.

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

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

8 years ago[Tooling] Parse compilation database command lines on Windows.
Zachary Turner [Wed, 17 Aug 2016 20:04:35 +0000 (20:04 +0000)]
[Tooling] Parse compilation database command lines on Windows.

When a compilation database is used on Windows, the command lines cannot
be parsed using the standard GNU style syntax. LLVM provides functions for
parsing Windows style command lines, so use them where appropriate.

After this patch, clang-tidy runs correctly on Windows.

Reviewed by: alexfh
Differential Revision: https://reviews.llvm.org/D23455

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

8 years ago[GraphWriter] Change GraphWriter to use NodeRef in GraphTraits
Tim Shen [Wed, 17 Aug 2016 20:02:38 +0000 (20:02 +0000)]
[GraphWriter] Change GraphWriter to use NodeRef in GraphTraits

Summary: Corresponding LLVM patch: D23580

Reviewers: dblaikie

Subscribers: cfe-commits

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

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

8 years ago[CodeGen][ObjC] Fix infinite recursion in getObjCEncodingForTypeImpl.
Akira Hatanaka [Wed, 17 Aug 2016 19:42:22 +0000 (19:42 +0000)]
[CodeGen][ObjC] Fix infinite recursion in getObjCEncodingForTypeImpl.

Check that ExpandStructures is true before visiting the list of ivars.

rdar://problem/27135221

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

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

8 years agoModule debug info: Fix a bug in handling record decls without fields.
Adrian Prantl [Wed, 17 Aug 2016 18:27:24 +0000 (18:27 +0000)]
Module debug info: Fix a bug in handling record decls without fields.

The previous condition would erroneously mark all CXXRecordDecls
that didn't have any fields as being defined in a clang module.
This patch fixes the condition to only apply to explicit template
instantiations.

<rdar://problem/27771823>

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

8 years agoSimplify condition. (NFC)
Adrian Prantl [Wed, 17 Aug 2016 16:42:15 +0000 (16:42 +0000)]
Simplify condition. (NFC)

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

8 years agoDebug info: Mark noreturn functions with DIFlagNoReturn.
Adrian Prantl [Wed, 17 Aug 2016 16:20:32 +0000 (16:20 +0000)]
Debug info: Mark noreturn functions with DIFlagNoReturn.

This affects functions with the C++11 [[ noreturn ]] and C11 _Noreturn
specifiers.

Patch by Victor Leschuk!

https://reviews.llvm.org/D23168

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

8 years ago[analyzer] Add a checker for loss of sign or precision in integral casts.
Artem Dergachev [Wed, 17 Aug 2016 16:02:45 +0000 (16:02 +0000)]
[analyzer] Add a checker for loss of sign or precision in integral casts.

This new checker tries to find execution paths on which implicit integral casts
cause definite loss of information: a certainly-negative integer is converted
to an unsigned integer, or an integer is definitely truncated to fit into
a smaller type.

Being implicit, such casts are likely to produce unexpected results.

Patch by Daniel Marjamäki!

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

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

8 years ago[analyzer] Add LocationContext information to SymbolMetadata.
Artem Dergachev [Wed, 17 Aug 2016 15:37:52 +0000 (15:37 +0000)]
[analyzer] Add LocationContext information to SymbolMetadata.

Like SymbolConjured, SymbolMetadata also needs to be uniquely
identified by the moment of its birth.

Such moments are coded by the (Statement, LocationContext, Block count) triples.
Each such triple represents the moment of analyzing a statement with a certain
call backtrace, with corresponding CFG block having been entered a given amount
of times during analysis of the current code body.

The LocationContext information was accidentally omitted for SymbolMetadata,
which leads to reincarnation of SymbolMetadata upon re-entering a code body
with a different backtrace; the new symbol is incorrectly unified with
the old symbol, which leads to unsound assumptions.

Patch by Alexey Sidorin!

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

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

8 years agoVisit lambda capture inits from RecursiveASTVisitor::TraverseLambdaCapture().
Martin Bohme [Wed, 17 Aug 2016 14:59:53 +0000 (14:59 +0000)]
Visit lambda capture inits from RecursiveASTVisitor::TraverseLambdaCapture().

Summary:
rL277342 made RecursiveASTVisitor visit lambda capture initialization
expressions (these are the Exprs in LambdaExpr::capture_inits()).

jdennett identified two issues with rL277342 (see comments there for details):

- It visits initialization expressions for implicit lambda captures, even if
  shouldVisitImplicitCode() returns false.

- It visits initialization expressions for init captures twice (because these
  were already traveresed in TraverseLambdaCapture() before rL277342)

This patch fixes these issues and moves the code for traversing initialization
expressions into TraverseLambdaCapture().

This patch also makes two changes required for the tests:

- It adds Lang_CXX14 to the Language enum in TestVisitor.

- It adds a parameter to ExpectedLocationVisitor::ExpectMatch() that specifies
  the number of times a match is expected to be seen.

Reviewers: klimek, jdennett, alexfh

Subscribers: cfe-commits

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

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

8 years agoAdd an AST matcher for external formal linkage.
Aaron Ballman [Wed, 17 Aug 2016 13:10:42 +0000 (13:10 +0000)]
Add an AST matcher for external formal linkage.

Patch by Visoiu Mistrih

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

8 years agoAdd missing tests
Roger Ferrer Ibanez [Wed, 17 Aug 2016 06:52:15 +0000 (06:52 +0000)]
Add missing tests

Change r278483 was missing the tests

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

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

8 years ago[ThinLTO] Adapt backend invocation to llvm API changes.
Mehdi Amini [Wed, 17 Aug 2016 06:23:08 +0000 (06:23 +0000)]
[ThinLTO] Adapt backend invocation to llvm API changes.

Reviewers: tejohnson

Subscribers: mehdi_amini, llvm-commits

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

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

8 years agoCodeGen: Avoid dereferencing end() in ScalarExprEmitter::EmitOverflowCheckedBinOp
Duncan P. N. Exon Smith [Wed, 17 Aug 2016 03:15:29 +0000 (03:15 +0000)]
CodeGen: Avoid dereferencing end() in ScalarExprEmitter::EmitOverflowCheckedBinOp

Use BB.getNextNode(), which returns nullptr on end(), instead of
&*BB.getIterator(), which is UB on end().
CodeGenFunction::createBasicBlock expects nullptr in this case already.

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

8 years ago[PM] Update Clang for LLVM's r278896 which re-organized a header.
Chandler Carruth [Wed, 17 Aug 2016 03:09:11 +0000 (03:09 +0000)]
[PM] Update Clang for LLVM's r278896 which re-organized a header.

(sorry this didn't get landed closer in time...)

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

8 years agoAdd missing close brace to fix Windows bots. Oops :(
Richard Smith [Wed, 17 Aug 2016 02:22:39 +0000 (02:22 +0000)]
Add missing close brace to fix Windows bots. Oops :(

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

8 years agoSome missing usage of TargetParser. NFC.
Zijiao Ma [Wed, 17 Aug 2016 02:13:33 +0000 (02:13 +0000)]
Some missing usage of TargetParser. NFC.

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

8 years agoIf possible, set the stack rlimit to at least 8MiB on cc1 startup, and work
Richard Smith [Wed, 17 Aug 2016 01:05:07 +0000 (01:05 +0000)]
If possible, set the stack rlimit to at least 8MiB on cc1 startup, and work
around a Linux kernel bug where the actual amount of available stack may be a
*lot* lower than the rlimit.

GCC also sets a higher stack rlimit on startup, but it goes all the way to
64MiB. We can increase this limit if it proves necessary.

The kernel bug is as follows: Linux kernels prior to version 4.1 may choose to
map the process's heap as little as 128MiB before the process's stack for a PIE
binary, even in a 64-bit virtual address space. This means that allocating more
than 128MiB before you reach the process's stack high water mark can lead to
crashes, even if you don't recurse particularly deeply.

We work around the kernel bug by touching a page deep within the stack (after
ensuring that we know how big it is), to preallocate virtual address space for
the stack so that the kernel doesn't allow the brk() area to wander into it,
when building clang as a Linux PIE binary.

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

8 years ago[CMake] Workflow improvements to PGO generation
Chris Bieneman [Tue, 16 Aug 2016 22:16:29 +0000 (22:16 +0000)]
[CMake] Workflow improvements to PGO generation

This patch adds a few new convenience options used by the PGO CMake cache to setup options on bootstrap stages. The new options are:

PGO_INSTRUMENT_LTO - Builds the instrumented and final builds with LTO
PGO_BUILD_CONFIGURATION - Accepts a CMake cache script that can be used for complex configuration of the stage2-instrumented and stage2 builds.

The patch also includes a fix for bootstrap dependencies so that the instrumented LTO tools don't get used when building the final stage, and it adds distribution targets to the passthrough.

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

8 years agoEmit debug info for dynamic classes if they are imported from a DLL.
Adrian McCarthy [Tue, 16 Aug 2016 22:11:18 +0000 (22:11 +0000)]
Emit debug info for dynamic classes if they are imported from a DLL.

With -debug-info-kind=limited, we omit debug info for dynamic classes that live in other TUs. This reduces duplicate type information. When statically linked, the type information comes together. But if your binary has a class derived from a base in a DLL, the base class info is not available to the debugger.

The decision is made in shouldOmitDefinition (CGDebugInfo.cpp). Per a suggestion from rnk, I've tweaked the decision so that we do include definitions for classes marked as DLL imports. This should be a relatively small number of classes, so we don't pay a large price for duplication of the type info, yet it should cover most cases on Windows.

Essentially this makes debug info for DLLs independent, but we still assume that all TUs within the same DLL will be consistently built with (or without) debug info and the debugger will be able to search across the debug info within that scope to resolve any declarations into definitions, etc.

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

8 years ago[OpenCL] AMDGPU: Add extensions cl_amd_media_ops and cl_amd_media_ops2
Yaxun Liu [Tue, 16 Aug 2016 20:49:49 +0000 (20:49 +0000)]
[OpenCL] AMDGPU: Add extensions cl_amd_media_ops and cl_amd_media_ops2

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

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

8 years ago[CMake] Fixing typo in Info.plist generation
Chris Bieneman [Tue, 16 Aug 2016 20:49:49 +0000 (20:49 +0000)]
[CMake] Fixing typo in Info.plist generation

This is causing an error in the generation of the clang info plist.

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

8 years ago[CMake] [Apple Cache] Set CLANG_VENDOR_UTI for Apple builds
Chris Bieneman [Tue, 16 Aug 2016 20:44:58 +0000 (20:44 +0000)]
[CMake] [Apple Cache] Set CLANG_VENDOR_UTI for Apple builds

This is just a minor update to the Apple packaging configuration.

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

8 years agoTry to work around an MSVC 2013 bug around defaulted default ctors
Reid Kleckner [Tue, 16 Aug 2016 20:20:56 +0000 (20:20 +0000)]
Try to work around an MSVC 2013 bug around defaulted default ctors

An UnresolvedSetIterator() is supposed to be zeroed out, but MSVC 2013
does not do that.

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

8 years ago[ObjC] Warn on unguarded use of partial declaration
Erik Pilkington [Tue, 16 Aug 2016 17:44:11 +0000 (17:44 +0000)]
[ObjC] Warn on unguarded use of partial declaration

This commit adds a traversal of the AST after Sema of a function that diagnoses
unguarded references to declarations that are partially available (based on
availability attributes). This traversal is only done when we would otherwise
emit -Wpartial-availability.

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

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

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

8 years agoRevert "[X86] Add xgetbv/x[X86] Add xgetbv xsetbv intrinsics to non-windows platforms"
Reid Kleckner [Tue, 16 Aug 2016 16:04:14 +0000 (16:04 +0000)]
Revert "[X86] Add xgetbv/x[X86] Add xgetbv xsetbv intrinsics to non-windows platforms"

This reverts commit r278783.  It breaks usage of _xgetbv on Windows.

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

8 years agoReduce the number of allocations required for AST attributes. In test cases, the...
Aaron Ballman [Tue, 16 Aug 2016 14:48:39 +0000 (14:48 +0000)]
Reduce the number of allocations required for AST attributes. In test cases, the max resident memory changed from 65760k to 64476k which is 1.9% improvement. Allocations in grow_pod changed from 8847 to 4872 according to tcmalloc heap profiler. Overall running time remained the same.

Patch by Eugene Kosov

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

8 years agoReorder stderr redirection in test command.
Samuel Antao [Tue, 16 Aug 2016 14:38:39 +0000 (14:38 +0000)]
Reorder stderr redirection in test command.

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

8 years agoAdd empty --gcc-toolchain empty to cuda-detect test.
Samuel Antao [Tue, 16 Aug 2016 14:31:39 +0000 (14:31 +0000)]
Add empty --gcc-toolchain empty to cuda-detect test.

Unless we overload the default gcc toolchain with an empty string
the system root used in the tests will be ignored if the user builds
clang  with a custom gcc toolchain.

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

8 years agoLeft shifts of negative values are defined if -fwrapv is set
James Molloy [Tue, 16 Aug 2016 09:45:36 +0000 (09:45 +0000)]
Left shifts of negative values are defined if -fwrapv is set

This means we shouldn't emit ubsan detection code or warn.
Fixes PR25552.

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

8 years ago[X86] Add xgetbv/x[X86] Add xgetbv xsetbv intrinsics to non-windows platforms
Marina Yatsina [Tue, 16 Aug 2016 08:13:36 +0000 (08:13 +0000)]
[X86] Add xgetbv/x[X86] Add xgetbv xsetbv intrinsics to non-windows platforms

commit on behalf of guyblank

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

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

8 years ago[CUDA] Fix "declared here" note on deferred wrong-side errors.
Justin Lebar [Tue, 16 Aug 2016 00:48:21 +0000 (00:48 +0000)]
[CUDA] Fix "declared here" note on deferred wrong-side errors.

Previously we weren't deferring these "declared here" notes, which is
obviously wrong.

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

8 years agoPR28978: If we need overload resolution for the move constructor of an
Richard Smith [Tue, 16 Aug 2016 00:13:47 +0000 (00:13 +0000)]
PR28978: If we need overload resolution for the move constructor of an
anonymous union member of a class, we need overload resolution for the move
constructor of the class itself too; we can't rely on Sema to do the right
thing for us for anonymous union types.

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

8 years ago[CUDA] Raise an error if a wrong-side call is codegen'ed.
Justin Lebar [Mon, 15 Aug 2016 23:00:49 +0000 (23:00 +0000)]
[CUDA] Raise an error if a wrong-side call is codegen'ed.

Summary:
Some function calls in CUDA are allowed to appear in
semantically-correct programs but are an error if they're ever
codegen'ed.  Specifically, a host+device function may call a host
function, but it's an error if such a function is ever codegen'ed in
device mode (and vice versa).

Previously, clang made no attempt to catch these errors.  For the most
part, they would be caught by ptxas, and reported as "call to unknown
function 'foo'".

Now we catch these errors and report them the same as we report other
illegal calls (e.g. a call from a host function to a device function).

This has a small change in error-message behavior for calls that were
previously disallowed (e.g. calls from a host to a device function).
Previously, we'd catch disallowed calls fairly early, before doing
additional semantic checking e.g. of the call's arguments.  Now we catch
these illegal calls at the very end of our semantic checks, so we'll
only emit a "illegal CUDA call" error if the call is otherwise
well-formed.

Reviewers: tra, rnk

Subscribers: cfe-commits

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

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

8 years ago[ADT] Change PostOrderIterator to use NodeRef. NFC.
Tim Shen [Mon, 15 Aug 2016 21:27:56 +0000 (21:27 +0000)]
[ADT] Change PostOrderIterator to use NodeRef. NFC.

Summary: Corresponding LLVM change: D23522

Reviewers: dblaikie

Subscribers: cfe-commits

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

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

8 years agoObjective-C diagnostics: isObjCNSObjectType should check through AttributedType.
Manman Ren [Mon, 15 Aug 2016 21:05:00 +0000 (21:05 +0000)]
Objective-C diagnostics: isObjCNSObjectType should check through AttributedType.

For the following example:
typedef __attribute__((NSObject)) CGColorRef ColorAttrRef;
@property (strong, nullable) ColorAttrRef color;
The property type should be ObjC NSObject type and the compiler should not emit
error: property with 'retain (or strong)' attribute must be of object type

rdar://problem/27747154

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

8 years agoAdd the notion of deferred diagnostics.
Justin Lebar [Mon, 15 Aug 2016 20:38:56 +0000 (20:38 +0000)]
Add the notion of deferred diagnostics.

Summary:
This patch lets you create diagnostics that are emitted if and only if a
particular FunctionDecl is codegen'ed.

This is necessary for CUDA, where some constructs -- e.g. calls from
host+device functions to host functions when compiling for device -- are
allowed to appear in semantically-correct programs, but only if they're
never codegen'ed.

Reviewers: rnk

Subscribers: cfe-commits, tra

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

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

8 years ago[CUDA] Include CUDA headers before anything else.
Justin Lebar [Mon, 15 Aug 2016 20:38:52 +0000 (20:38 +0000)]
[CUDA] Include CUDA headers before anything else.

Summary:
There's no point to --cuda-path if we then go and include /usr/include
first.  And if you install the right packages, Ubuntu will install (very
old) CUDA headers there.

Reviewers: tra

Subscribers: cfe-commits, Prazek

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

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

8 years ago[CUDA] Fix CUDA install version parsing.
Justin Lebar [Mon, 15 Aug 2016 20:38:48 +0000 (20:38 +0000)]
[CUDA] Fix CUDA install version parsing.

Summary:
getAsInteger returns true on error.  Oops.

No test because the behavior at the moment is identical with or without
this change.

Reviewers: tra

Subscribers: cfe-commits, Prazek

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

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

8 years agoStaticAnalyzer: Report found fields order in PaddingChecker
Saleem Abdulrasool [Mon, 15 Aug 2016 20:16:13 +0000 (20:16 +0000)]
StaticAnalyzer: Report found fields order in PaddingChecker

Report the found fields order in PaddingChecker.

Patch by Alexander Shaposhnikov!

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

8 years ago[CMake] Apple stage1 doesn't need to set libcxx options
Chris Bieneman [Mon, 15 Aug 2016 20:15:22 +0000 (20:15 +0000)]
[CMake] Apple stage1 doesn't need to set libcxx options

LibCXX settings are configured in stage2 so we don't need them here.

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

8 years agoReplace an obsolete company name.
Paul Robinson [Mon, 15 Aug 2016 18:45:52 +0000 (18:45 +0000)]
Replace an obsolete company name.

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

8 years ago[CodeGen] Ignore unnamed bitfields before handling vector fields
David Majnemer [Mon, 15 Aug 2016 07:20:40 +0000 (07:20 +0000)]
[CodeGen] Ignore unnamed bitfields before handling vector fields

We processed unnamed bitfields after our logic for non-vector field
elements in records larger than 128 bits.  The vector logic would
determine that the bit-field disqualifies the record from occupying a
register despite the unnamed bit-field not participating in the record
size nor its alignment.

N.B. This behavior matches GCC and ICC.

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

8 years ago[CodeGen] Correctly implement the AVX512 psABI rules
David Majnemer [Mon, 15 Aug 2016 06:39:18 +0000 (06:39 +0000)]
[CodeGen] Correctly implement the AVX512 psABI rules

An __m512 vector type wrapped in a structure should be passed in a
vector register.

Our prior implementation was based on a draft version of the psABI.

This fixes PR28975.

N.B. The update to the ABI was made here:
https://github.com/hjl-tools/x86-psABI/commit/30f9c9

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

8 years agocxx_status: update features implemented in clang 3.9 from "svn" to "Clang 3.9" now...
Richard Smith [Mon, 15 Aug 2016 02:47:23 +0000 (02:47 +0000)]
cxx_status: update features implemented in clang 3.9 from "svn" to "Clang 3.9" now that svn trunk is 4.0.

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

8 years agocxx_status: mark decomposition declarations as "partial": the implementation is
Richard Smith [Mon, 15 Aug 2016 02:37:43 +0000 (02:37 +0000)]
cxx_status: mark decomposition declarations as "partial": the implementation is
essentially complete, other than parts where design questions have been raised
(lambda capture, decomposition of arrays by copy).

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

8 years agoDisable lambda-capture of decomposition declaration bindings for now, until CWG
Richard Smith [Mon, 15 Aug 2016 02:34:23 +0000 (02:34 +0000)]
Disable lambda-capture of decomposition declaration bindings for now, until CWG
agrees on how they're supposed to work.

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

8 years agoAdd a triple to this test to make buildbots happier.
Richard Smith [Mon, 15 Aug 2016 02:24:00 +0000 (02:24 +0000)]
Add a triple to this test to make buildbots happier.

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

8 years agoP0217R3: code generation support for decomposition declarations.
Richard Smith [Mon, 15 Aug 2016 01:33:41 +0000 (01:33 +0000)]
P0217R3: code generation support for decomposition declarations.

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

8 years agoExplicitly generate a reference variable to hold the initializer for a
Richard Smith [Sun, 14 Aug 2016 23:15:52 +0000 (23:15 +0000)]
Explicitly generate a reference variable to hold the initializer for a
tuple-like decomposition declaration. This significantly simplifies the
semantics of BindingDecls for AST consumers (they can now always be evalated
at the point of use).

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

8 years agoFix build broken after llvm/ADT/DenseMap.h replacement of climits with limits.
Eugene Zelenko [Sat, 13 Aug 2016 01:05:35 +0000 (01:05 +0000)]
Fix build broken after llvm/ADT/DenseMap.h replacement of climits with limits.

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

8 years ago[CUDA] Place GPU binary into .nv_fatbin section and align it by 8.
Artem Belevich [Fri, 12 Aug 2016 18:44:01 +0000 (18:44 +0000)]
[CUDA] Place GPU binary into .nv_fatbin section and align it by 8.

This matches the way nvcc encapsulates GPU binaries into host object file.
Now cuobjdump can deal with clang-compiled object files.

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

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

8 years agoReapply [VFS] Skip non existent files from the VFS tree
Bruno Cardoso Lopes [Fri, 12 Aug 2016 18:18:24 +0000 (18:18 +0000)]
Reapply [VFS] Skip non existent files from the VFS tree

Reapply r278457 with test fixed to not abouse fs case sensitivity.

When the VFS uses a YAML file, the real file path for a
virtual file is described in the "external-contents" field. Example:

  ...
  {
     'type': 'file',
     'name': 'a.h',
     'external-contents': '/a/b/c/a.h'
  }

Currently, when parsing umbrella directories, we use
vfs::recursive_directory_iterator to gather the header files to generate the
equivalent modules for. If the external contents for a header does not exist,
we currently are unable to build a module, since the VFS
vfs::recursive_directory_iterator will fail when it finds an entry without a
reliable real path.

Since the YAML file could be prepared ahead of time and shared among
different compiler invocations, an entry might not yet have a reliable
path in 'external-contents', breaking the iteration.

Give the VFS the capability to skip such entries whenever
'ignore-non-existent-contents' property is set in the YAML file.

rdar://problem/27531549

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

8 years agoCodeGen: Replace ThinLTO backend implementation with a client of LTO/Resolution.
Teresa Johnson [Fri, 12 Aug 2016 18:12:08 +0000 (18:12 +0000)]
CodeGen: Replace ThinLTO backend implementation with a client of LTO/Resolution.

Summary:
This changes clang to use the llvm::lto::thinBackend function instead of
its own less comprehensive ThinLTO backend implementation.

Patch by Peter Collingbourne

Reviewers: tejohnson, mehdi_amini

Subscribers: cfe-commits, mehdi_amini

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

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

8 years ago[Driver] Set the default driver mode based on the executable.
Zachary Turner [Fri, 12 Aug 2016 17:47:52 +0000 (17:47 +0000)]
[Driver] Set the default driver mode based on the executable.

Currently, if --driver-mode is not passed at all, it will default
to GCC style driver.  This is never an issue for clang because
it manually constructs a --driver-mode option and passes it.

However, we should still try to do as good as we can even if no
--driver-mode is passed.  LibTooling, for example, does not pass
a --driver-mode option and while it could, it seems like we should
still fallback to the best possible default we can.

This is one of two steps necessary to get clang-tidy working on Windows.

Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D23454

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

8 years agoRevert test commit
Alexander Droste [Fri, 12 Aug 2016 17:46:23 +0000 (17:46 +0000)]
Revert test commit

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

8 years agoTest commit - first LLVM repo commit
Alexander Droste [Fri, 12 Aug 2016 17:43:58 +0000 (17:43 +0000)]
Test commit - first LLVM repo commit

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

8 years agoBugReporter: Use ilist_half_embedded_sentinel_traits, NFC
Duncan P. N. Exon Smith [Fri, 12 Aug 2016 16:46:25 +0000 (16:46 +0000)]
BugReporter: Use ilist_half_embedded_sentinel_traits, NFC

This avoids duplicated code with llvm/ADT/ilist.h.  No functionality
change.

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

8 years ago[ASTMatchers] Add templateTypeParmDecl() to Registry.cpp
Martin Bohme [Fri, 12 Aug 2016 13:51:00 +0000 (13:51 +0000)]
[ASTMatchers] Add templateTypeParmDecl() to Registry.cpp

Summary:
This appears to have been forgotten when templateTypeParmDecl() was initially
added.

Reviewers: alexfh, aaron.ballman

Subscribers: aaron.ballman, klimek, aemerson, rengolin, samparker, cfe-commits

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

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

8 years agoFix Wdocumentation unknown parameter warning
Simon Pilgrim [Fri, 12 Aug 2016 11:43:57 +0000 (11:43 +0000)]
Fix Wdocumentation unknown parameter warning

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

8 years agoFix For pr28288 - Error message in shift of vector values
Andrey Bokhanko [Fri, 12 Aug 2016 11:22:12 +0000 (11:22 +0000)]
Fix For pr28288 - Error message in shift of vector values

This fixes an error in type checking of shift of vector values.

Patch by Vladimir Yakovlev.

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

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

8 years agoFix cuda-detect.cu when CLANG_DEFAULT_CXX_STDLIB is set
Jonas Hahnfeld [Fri, 12 Aug 2016 10:36:04 +0000 (10:36 +0000)]
Fix cuda-detect.cu when CLANG_DEFAULT_CXX_STDLIB is set

Reported by Ismail Donmez!

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

8 years agoPrune unused diagnostics. NFC.
Benjamin Kramer [Fri, 12 Aug 2016 09:23:14 +0000 (09:23 +0000)]
Prune unused diagnostics. NFC.

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

8 years ago[C++1z] Fix crash when decomposing structs with anonymous members.
Benjamin Kramer [Fri, 12 Aug 2016 09:19:34 +0000 (09:19 +0000)]
[C++1z] Fix crash when decomposing structs with anonymous members.

The diagnostic format was invalid.

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

8 years agoThis patch implements PR#22821.
Roger Ferrer Ibanez [Fri, 12 Aug 2016 08:04:13 +0000 (08:04 +0000)]
This patch implements PR#22821.

Taking the address of a packed member is dangerous since the reduced
alignment of the pointee is lost. This can lead to memory alignment
faults in some architectures if the pointer value is dereferenced.

This change adds a new warning to clang emitted when taking the address
of a packed member. A packed member is either a field/data member
declared as attribute((packed)) or belonging to a struct/class
declared as such. The associated flag is -Waddress-of-packed-member.
Conversions (either implicit or via a valid casting) to pointer types
with lower or equal alignment requirements (e.g. void* or char*)
will silence the warning.

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

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

8 years ago[Sema] Fix the wording of a comment. NFC.
George Burgess IV [Fri, 12 Aug 2016 04:19:35 +0000 (04:19 +0000)]
[Sema] Fix the wording of a comment. NFC.

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

8 years ago[Sema] Fix a crash on variadic enable_if functions.
George Burgess IV [Fri, 12 Aug 2016 04:12:31 +0000 (04:12 +0000)]
[Sema] Fix a crash on variadic enable_if functions.

Currently, when trying to evaluate an enable_if condition, we try to
evaluate all arguments a user passes to a function. Given that we can't
use variadic arguments from said condition anyway, not converting them
is a reasonable thing to do. So, this patch makes us ignore any varargs
when attempting to check an enable_if condition.

We'd crash because, in order to convert an argument, we need its
ParmVarDecl. Variadic arguments don't have ParmVarDecls.

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

8 years agoP0217R3: serialization/deserialization support for c++17 decomposition declarations.
Richard Smith [Fri, 12 Aug 2016 02:21:25 +0000 (02:21 +0000)]
P0217R3: serialization/deserialization support for c++17 decomposition declarations.

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

8 years agoRevert "[VFS] Skip non existent files from the VFS tree"
Bruno Cardoso Lopes [Fri, 12 Aug 2016 02:17:26 +0000 (02:17 +0000)]
Revert "[VFS] Skip non existent files from the VFS tree"

Breaking bots:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/27281/

This reverts commit r278457.

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

8 years agoP0217R3: template instantiation support for decomposition declarations.
Richard Smith [Fri, 12 Aug 2016 01:55:21 +0000 (01:55 +0000)]
P0217R3: template instantiation support for decomposition declarations.

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

8 years ago[VFS] Skip non existent files from the VFS tree
Bruno Cardoso Lopes [Fri, 12 Aug 2016 01:51:04 +0000 (01:51 +0000)]
[VFS] Skip non existent files from the VFS tree

When the VFS uses a YAML file, the real file path for a
virtual file is described in the "external-contents" field. Example:

  ...
  {
     'type': 'file',
     'name': 'a.h',
     'external-contents': '/a/b/c/a.h'
  }

Currently, when parsing umbrella directories, we use
vfs::recursive_directory_iterator to gather the header files to generate the
equivalent modules for. If the external contents for a header does not exist,
we currently are unable to build a module, since the VFS
vfs::recursive_directory_iterator will fail when it finds an entry without a
reliable real path.

Since the YAML file could be prepared ahead of time and shared among
different compiler invocations, an entry might not yet have a reliable
path in 'external-contents', breaking the iteration.

Give the VFS the capability to skip such entries whenever
'ignore-non-existent-contents' property is set in the YAML file.

rdar://problem/27531549

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

8 years ago[VFS] Add 'ignore-non-existent-contents' field to YAML files
Bruno Cardoso Lopes [Fri, 12 Aug 2016 01:50:53 +0000 (01:50 +0000)]
[VFS] Add 'ignore-non-existent-contents' field to YAML files

Add 'ignore-non-existent-contents' to tell the VFS whether an invalid path
obtained via 'external-contents' should cause iteration on the VFS to stop.

If 'true', the VFS should ignore the entry and continue with the next. Allows
YAML files to be shared across multiple compiler invocations regardless of
prior existent paths in 'external-contents'. This global value is overridable
on a per-file basis.

This adds the parsing and write test part, but use by VFS comes next.

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

rdar://problem/27531549

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

8 years agoRemove unused and undesirable reference from BindingDecl to DecompositionDecl.
Richard Smith [Fri, 12 Aug 2016 00:53:41 +0000 (00:53 +0000)]
Remove unused and undesirable reference from BindingDecl to DecompositionDecl.

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

8 years agoP0217R3: Constant expression evaluation for decomposition declarations.
Richard Smith [Fri, 12 Aug 2016 00:39:32 +0000 (00:39 +0000)]
P0217R3: Constant expression evaluation for decomposition declarations.

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

8 years ago[Basic] Add const qualifier to SM.isInSystemMacro (NFC)
Vedant Kumar [Fri, 12 Aug 2016 00:20:39 +0000 (00:20 +0000)]
[Basic] Add const qualifier to SM.isInSystemMacro (NFC)

The member function is a predicate, and doesn't apply any changes on the
object.

Patch by Visoiu Mistrih Francis!

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

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

8 years agoP0217R3: Perform semantic checks and initialization for the bindings in a
Richard Smith [Thu, 11 Aug 2016 22:25:46 +0000 (22:25 +0000)]
P0217R3: Perform semantic checks and initialization for the bindings in a
decomposition declaration for arrays, aggregate-like structs, tuple-like
types, and (as an extension) for complex and vector types.

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

8 years agoDon't enable PIE on i686-unknown-cloudabi.
Ed Schouten [Thu, 11 Aug 2016 20:03:22 +0000 (20:03 +0000)]
Don't enable PIE on i686-unknown-cloudabi.

We're only going to provide support for using PIE on architectures that
provide PC-relative addressing. i686 is not one of those, so add the
necessary bits for only passing in -pie -zrelro conditionally.

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

8 years agoPass in frame pointer omitting compiler flags for CloudABI as well.
Ed Schouten [Thu, 11 Aug 2016 19:23:30 +0000 (19:23 +0000)]
Pass in frame pointer omitting compiler flags for CloudABI as well.

On Linux we pass in -fomit-frame-pointer flags (and similar)
automatically if optimization is enabled. Let's do the same thing on
CloudABI. Without this, Clang seems to run out of registers quite
quickly while trying to build code with inline assembly.

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

8 years ago[analyzer] Teach RetainCountChecker about CVFooRetain
Devin Coughlin [Thu, 11 Aug 2016 18:41:29 +0000 (18:41 +0000)]
[analyzer] Teach RetainCountChecker about CVFooRetain

Change the retain count checker to treat CoreFoundation-style "CV"-prefixed
reference types from CoreVideo similarly to CoreGraphics types. With this
change, we treat CVFooRetain() on a CVFooRef type as a retain. CVFooRelease()
APIs are annotated as consuming their parameter, so this change prevents false
positives about incorrect decrements of reference counts.

<rdar://problem/27116090>

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

8 years ago[Sema] Add more strict check for sizeof diagnostics for bzero
Bruno Cardoso Lopes [Thu, 11 Aug 2016 18:33:15 +0000 (18:33 +0000)]
[Sema] Add more strict check for sizeof diagnostics for bzero

Follow-up from r278264 after Joerg's feedback.

Since bzero is not standard, be more strict: also check if the first
argument is a pointer, which harden the check for when it does not come
originally from a builtin.

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

8 years agobindings: expose diagnostic formatting to Python
Saleem Abdulrasool [Thu, 11 Aug 2016 05:31:07 +0000 (05:31 +0000)]
bindings: expose diagnostic formatting to Python

This makes it easier for tools using the Python libclang bindings to display
diagnostics in a manner consistent with clang.

Patch by Omar Sandoval!

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

8 years ago[Order Files] Don't use empty order files
Chris Bieneman [Thu, 11 Aug 2016 00:19:51 +0000 (00:19 +0000)]
[Order Files] Don't use empty order files

LD64 does optimization on symbol layouts that gets disabled whenever an order file is passed (even if it is empty). This change prevents disabling that optimization, and still enables iterative generation and usage of order files.

If the order file is empty it does not setup the order file flags, instead it sets the empty order file as a configuration dependency. When the order file changes it will then trigger a re-configuration that adds the linker flag.

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

8 years agoReapply [Sema] Add sizeof diagnostics for bzero
Bruno Cardoso Lopes [Wed, 10 Aug 2016 18:34:47 +0000 (18:34 +0000)]
Reapply [Sema] Add sizeof diagnostics for bzero

Reapply r277787. For memset (and others) we can get diagnostics like:

  struct stat { int x; };
  void foo(struct stat *stamps) {
    bzero(stamps, sizeof(stamps));
    memset(stamps, 0, sizeof(stamps));
  }

  t.c:7:28: warning: 'memset' call operates on objects of type 'struct stat' while the size is based on a different type 'struct stat *' [-Wsizeof-pointer-memaccess]
    memset(stamps, 0, sizeof(stamps));
           ~~~~~~            ^~~~~~
  t.c:7:28: note: did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?
    memset(stamps, 0, sizeof(stamps));
                             ^~~~~~

This patch implements the same class of warnings for bzero.

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

rdar://problem/18963514

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

8 years ago[analyzer] Fix a crash in CloneDetector when calling functions by pointers.
Artem Dergachev [Wed, 10 Aug 2016 16:25:16 +0000 (16:25 +0000)]
[analyzer] Fix a crash in CloneDetector when calling functions by pointers.

CallExpr may have a null direct callee when the callee function is not
known in compile-time. Do not try to take callee name in this case.

Patch by Raphael Isemann!

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

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

8 years ago[OpenCL] Fix typo in test that I accidentally introduced in my previous commit.
Joey Gouly [Wed, 10 Aug 2016 16:04:14 +0000 (16:04 +0000)]
[OpenCL] Fix typo in test that I accidentally introduced in my previous commit.

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

8 years ago[OpenCL] Change block descriptor address space to constant.
Joey Gouly [Wed, 10 Aug 2016 15:57:02 +0000 (15:57 +0000)]
[OpenCL] Change block descriptor address space to constant.

The block descriptor is a GlobalVariable in the LLVM IR, so it shouldn't be
in the private address space.

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

8 years ago[ASTMatchers] Extend documentation for match()
Martin Bohme [Wed, 10 Aug 2016 11:22:57 +0000 (11:22 +0000)]
[ASTMatchers] Extend documentation for match()

Summary:
Adds an explanation of how to use findAll() to find all matches in a subtree.

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

8 years ago[X86][AVX512] lower __mm512_andnot_ps/__mm512_andnot_pd to IR
Lama Saba [Wed, 10 Aug 2016 10:34:45 +0000 (10:34 +0000)]
[X86][AVX512] lower __mm512_andnot_ps/__mm512_andnot_pd to IR
Differential revision: https://reviews.llvm.org/D23262

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

8 years ago[X86][AVX] Ensure we only match against 1-byte alignment
Simon Pilgrim [Wed, 10 Aug 2016 09:59:49 +0000 (09:59 +0000)]
[X86][AVX] Ensure we only match against 1-byte alignment

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

8 years agoMake clang-format remove duplicate headers when sorting #includes.
Eric Liu [Wed, 10 Aug 2016 09:32:23 +0000 (09:32 +0000)]
Make clang-format remove duplicate headers when sorting #includes.

Summary: When sorting #includes, #include directives that have the same text will be deduplicated when sorting #includes, and only the first #include in the duplicate #includes remains. If the `Cursor` is provided and put on a deleted #include, it will be put on the remaining #include in the duplicate #includes.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

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

8 years ago[x86] Fix a really nasty bug introduced in r276417 where alignment
Chandler Carruth [Wed, 10 Aug 2016 07:32:47 +0000 (07:32 +0000)]
[x86] Fix a really nasty bug introduced in r276417 where alignment
constraints were added to _mm256_broadcast_{pd,ps} intel intrinsics.

The spec for these intrinics is ... pretty much silent on alignment.
This is especially frustrating considering the amount of discussion of
alignment in the load and store instrinsics. So I was forced to rely on
the specification for the VBROADCASTF128 instruction.

That instruction's spec is *also* completely silent on alignment.
Fortunately, when it comes to the instruction's spec, silence is enough.
There is no #GP fault option for an underaligned address so this
instruction, and by inference the intrinsic, can read any alignment.

As it happens, the old code worked exactly this way and in fact we have
plenty of code that hands pointers with less than 16-byte alignment to
these intrinsics. This code broke pretty spectacularly with this commit.

Fortunately, the fix is super simple! Change a 16 to a 1, and ta da!

Anyways, a lot of debugging for a really boring fix. =]

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