]> granicus.if.org Git - clang/log
clang
9 years ago[clang-fuzzer] Update clang-fuzzer to API change in r240225.
Alexey Samsonov [Thu, 25 Jun 2015 20:21:59 +0000 (20:21 +0000)]
[clang-fuzzer] Update clang-fuzzer to API change in r240225.

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

9 years agoRename local variable CCCPrintActions -> CCCPrintPhases.
Douglas Katzman [Thu, 25 Jun 2015 19:37:41 +0000 (19:37 +0000)]
Rename local variable CCCPrintActions -> CCCPrintPhases.

To match the '-ccc-print-phases' command-line flag.
Also make two more 'for' loops range-based. NFC

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

9 years agoUse more range-based for loops
Douglas Katzman [Thu, 25 Jun 2015 18:51:37 +0000 (18:51 +0000)]
Use more range-based for loops

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

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

9 years ago[CUDA] Implemented __nvvm_atom_*_gen_* builtins.
Artem Belevich [Thu, 25 Jun 2015 18:29:42 +0000 (18:29 +0000)]
[CUDA] Implemented __nvvm_atom_*_gen_* builtins.

Integer variants are implemented as atomicrmw or cmpxchg instructions.
Atomic add for floating point (__nvvm_atom_add_gen_f()) is implemented
as a call to an overloaded @llvm.nvvm.atomic.load.add.f32.* LVVM
intrinsic.

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

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

9 years agoOmit 'nodebug' methods from the class description.
Paul Robinson [Thu, 25 Jun 2015 17:50:43 +0000 (17:50 +0000)]
Omit 'nodebug' methods from the class description.

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

9 years ago[NVPTX] Fixed a typo in __nvvm_atom_min_gen_l() type string.
Artem Belevich [Thu, 25 Jun 2015 17:34:23 +0000 (17:34 +0000)]
[NVPTX] Fixed a typo in __nvvm_atom_min_gen_l() type string.

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

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

9 years agoFix #pragma redefine_extname when there is a local variable of the same name. The...
Aaron Ballman [Thu, 25 Jun 2015 15:37:16 +0000 (15:37 +0000)]
Fix #pragma redefine_extname when there is a local variable of the same name. The local should not be renamed, only the externally-available declaration should be.

Patch by Andrey Bokhanko!

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

9 years agoFix a crash by division by zero in analyzer
Daniel Marjamaki [Thu, 25 Jun 2015 14:06:02 +0000 (14:06 +0000)]
Fix a crash by division by zero in analyzer

Patch by takeshi-yoshimura!

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

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

9 years agoTeach Clang about the PPC64 memory sanitizer implementation.
Jay Foad [Thu, 25 Jun 2015 10:35:19 +0000 (10:35 +0000)]
Teach Clang about the PPC64 memory sanitizer implementation.

Summary:
This is the Clang part of the PPC64 memory sanitizer implementation in
D10648.

Reviewers: kcc, eugenis, willschm, wschmidt, samsonov

Reviewed By: samsonov

Subscribers: cfe-commits

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

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

9 years agoclang-format: [Proto] Don't treat "operator" as keyword.
Daniel Jasper [Thu, 25 Jun 2015 08:38:46 +0000 (08:38 +0000)]
clang-format: [Proto] Don't treat "operator" as keyword.

Before:
  optional string operator= 1;

After:
  optional string operator = 1;

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

9 years agoUpdate darwin SDK version parsing to support OSX and simulator
Steven Wu [Thu, 25 Jun 2015 01:59:35 +0000 (01:59 +0000)]
Update darwin SDK version parsing to support OSX and simulator

This re-commits r226005 with a tweak. The origin attempt failed because
Darwin bot sets up SDKROOT and clang can deduce SDK version from them
after this patch. That broke many driver tests due to the change of
deployment target version. Now the tests should not complain after
r240574.

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

9 years ago[UBSan] Allow to use -fsanitize=vptr only on Mac OS 10.9+
Alexey Samsonov [Thu, 25 Jun 2015 00:58:02 +0000 (00:58 +0000)]
[UBSan] Allow to use -fsanitize=vptr only on Mac OS 10.9+

See https://llvm.org/bugs/show_bug.cgi?id=23539 for why this
is necessary.

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

9 years agoConsolidate and unify initializer list deduction
Hubert Tong [Thu, 25 Jun 2015 00:25:49 +0000 (00:25 +0000)]
Consolidate and unify initializer list deduction

Summary:
This patch reduces duplication in the template argument deduction code
for handling deduction from initializer lists in a function call. This
extends the fix for PR12119 to also apply to the case where the
corresponding parameter is a trailing parameter pack.

Test Plan:
A test for deduction from nested initializer lists where the
corresponding parameter is a trailing parameter pack is added in
`clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp`.

Reviewers: fraggamuffin, rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

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

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

9 years ago[Concepts] Parsing of requires-clause in template-declaration
Hubert Tong [Thu, 25 Jun 2015 00:23:39 +0000 (00:23 +0000)]
[Concepts] Parsing of requires-clause in template-declaration

Summary:
This change implements parse-only acceptance of the optional
requires-clause in a template-declaration. Diagnostic testing is added
for cases where the grammar is ambiguous with the expectation that the
longest token sequence which matches the syntax of a
constraint-expression is consumed without backtracking.

Reviewers: faisalv, fraggamuffin, rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

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

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

9 years ago[ARM] The bits set in the variable HW_FP could get unset
Ranjeet Singh [Wed, 24 Jun 2015 23:39:25 +0000 (23:39 +0000)]
[ARM] The bits set in the variable HW_FP could get unset
when iterating through the Features vector if we don't
keep track of what's already been set. This could lead to
the macro __ARM_FP getting the wrong value. This patch
fixes this issue by keeping track of the bits that have
already been set in the loop.

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

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

9 years agoupdate comment
Derek Schuff [Wed, 24 Jun 2015 22:36:38 +0000 (22:36 +0000)]
update comment

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

9 years agoRelax assertion in x86_64 byval argument handling for 32-bit pointers
Derek Schuff [Wed, 24 Jun 2015 22:36:36 +0000 (22:36 +0000)]
Relax assertion in x86_64 byval argument handling for 32-bit pointers

Summary:
Byval argument pair formation assumes that if a type is less than 8 bytes
it must be an integer and not a pointer, which is not true for x32 and NaCl.

Relax the assertion and add a test for a codegen case that triggered it.

Reviewers: jvoung

Subscribers: jfb, cfe-commits

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

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

9 years agoAdd __nonnull/__nullable/__null_unspecified predefines for Darwin.
Douglas Gregor [Wed, 24 Jun 2015 22:02:16 +0000 (22:02 +0000)]
Add __nonnull/__nullable/__null_unspecified predefines for Darwin.

Addresses the rest of rdar://problem/21530726.

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

9 years agoReplace __double_underscored type nullability qualifiers with _Uppercase_underscored
Douglas Gregor [Wed, 24 Jun 2015 22:02:08 +0000 (22:02 +0000)]
Replace __double_underscored type nullability qualifiers with _Uppercase_underscored

Addresses a conflict with glibc's __nonnull macro by renaming the type
nullability qualifiers as follows:

  __nonnull -> _Nonnull
  __nullable -> _Nullable
  __null_unspecified -> _Null_unspecified

This is the major part of rdar://problem/21530726, but does not yet
provide the Darwin-specific behavior for the old names.

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

9 years agoRemove environment variables from driver tests
Steven Wu [Wed, 24 Jun 2015 19:30:36 +0000 (19:30 +0000)]
Remove environment variables from driver tests

Summary:
Remove some of dangerous environmental variables from clang/Driver tests.
Driver tests should not rely on preset value of these variables and may
actually fail because of them.
They cannot be removed in test/lit.cfg because we still need to support
relocatable SDKs and other overwrite for other clang tests.

Reviewers: bogner

Subscribers: rnk, cfe-commits

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

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

9 years ago[Preprocessor] Iterating over all macros should include those from modules.
Jordan Rose [Wed, 24 Jun 2015 19:27:02 +0000 (19:27 +0000)]
[Preprocessor] Iterating over all macros should include those from modules.

So, iterate over the list of macros mentioned in modules, and make sure those
are in the master table.

This isn't particularly efficient, but hopefully it's something that isn't
done too often.

PR23929 and rdar://problem/21480635

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

9 years agoclang-format: [JS] Support regex literals containing quotes (' and ").
Daniel Jasper [Wed, 24 Jun 2015 16:01:02 +0000 (16:01 +0000)]
clang-format: [JS] Support regex literals containing quotes (' and ").

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

9 years agoExpress Driver::GetFilePath more concisely.
Douglas Katzman [Wed, 24 Jun 2015 15:10:30 +0000 (15:10 +0000)]
Express Driver::GetFilePath more concisely.

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

9 years agoSilencing some Sphinx warnings about duplicate explicit target names.
Aaron Ballman [Wed, 24 Jun 2015 12:11:04 +0000 (12:11 +0000)]
Silencing some Sphinx warnings about duplicate explicit target names.

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

9 years ago[OPENMP] Codegen for 'depend' clause (OpenMP 4.0).
Alexey Bataev [Wed, 24 Jun 2015 11:01:36 +0000 (11:01 +0000)]
[OPENMP] Codegen for 'depend' clause (OpenMP 4.0).

If task directive has associated 'depend' clause then function kmp_int32 __kmpc_omp_task_with_deps ( ident_t *loc_ref, kmp_int32 gtid, kmp_task_t * new_task, kmp_int32 ndeps, kmp_depend_info_t *dep_list,kmp_int32 ndeps_noalias, kmp_depend_info_t *noalias_dep_list) must be called instead of __kmpc_omp_task().
If this directive has associated 'if' clause then also before a call of kmpc_omp_task_begin_if0() a function void __kmpc_omp_wait_deps ( ident_t *loc_ref, kmp_int32 gtid, kmp_int32 ndeps, kmp_depend_info_t *dep_list, kmp_int32 ndeps_noalias, kmp_depend_info_t *noalias_dep_list) must be called.
Array sections are not supported yet.

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

9 years agoRemove a limited and somewhat questionable DenseMapInfo specialization
Chandler Carruth [Wed, 24 Jun 2015 10:24:30 +0000 (10:24 +0000)]
Remove a limited and somewhat questionable DenseMapInfo specialization
for StringRef now that the core DenseMap library provides this facility.

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

9 years agoMove the special-case check from r240462 into ARM-specific code.
Bob Wilson [Wed, 24 Jun 2015 06:05:20 +0000 (06:05 +0000)]
Move the special-case check from r240462 into ARM-specific code.

This fixes a serious bug in r240462: checking the BuiltinID for
ARM::BI_MoveToCoprocessor* in EmitBuiltinExpr() ignores the fact that
each target has an overlapping range of the BuiltinID values. That check
can trigger for builtins from other targets, leading to very bad
behavior.

Part of the reason I did not implement r240462 this way to begin with is
the special handling of the last argument for Neon builtins. In this
change, I have factored out the check to see which builtins have that
extra argument into a new HasExtraNeonArgument() function. There is still
some awkwardness in having to check for those builtins in two separate
places, i.e., once to see if the extra argument is present and once to
generate the appropriate IR, but this seems much cleaner than my previous
patch.

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

9 years agoProper changing/restoring for CapturedStmtInfo, NFC.
Alexey Bataev [Wed, 24 Jun 2015 03:35:38 +0000 (03:35 +0000)]
Proper changing/restoring for CapturedStmtInfo, NFC.

Added special RAII class for proper values changing/restoring in CodeGenFunction::CapturedStmtInfo.

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

9 years agoFix test failure if this value doesn't end up named %0.
Richard Smith [Tue, 23 Jun 2015 23:13:31 +0000 (23:13 +0000)]
Fix test failure if this value doesn't end up named %0.

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

9 years agoUse range-based loops when handling OPT_print_search_dirs.
Douglas Katzman [Tue, 23 Jun 2015 22:43:50 +0000 (22:43 +0000)]
Use range-based loops when handling OPT_print_search_dirs.

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

9 years agoSafeStack documentation improvements
Peter Collingbourne [Tue, 23 Jun 2015 22:24:45 +0000 (22:24 +0000)]
SafeStack documentation improvements

This patch makes the following improvements to the SafeStack documentation:

Explicitly states the security guarantees of the SafeStack
Clarifies which of the security guarantees are probabilistic
Re-orders security limitations to put the most severe ones first
Explains how `__attribute__((no_sanitize("safe-stack")))` works and how to use it safely
Explains that SafeStack should be combined with a forward-edge protection mechanism, such as CPI, IFCC or others
Multiple readability and stylistic improvements

Patch by Volodymyr Kuznetsov!

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

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

9 years ago[Driver] Give GnuTool LLVM_LIBRARY_VISIBILITY.
Benjamin Kramer [Tue, 23 Jun 2015 21:15:15 +0000 (21:15 +0000)]
[Driver] Give GnuTool LLVM_LIBRARY_VISIBILITY.

This is consistent with all other classes in Tools.h.

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

9 years agoImprove error handling for PR22560.
Bob Wilson [Tue, 23 Jun 2015 21:10:24 +0000 (21:10 +0000)]
Improve error handling for PR22560.

The ARM _MoveToCoprocessor and _MoveFromCoprocessor builtins require
integer constants for most arguments, but clang was not checking that.
With this change, we now report meaningful errors instead of crashing
in the backend.

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

9 years agoPR22560: Fix argument order for ARM _MoveToCoprocessor builtins.
Bob Wilson [Tue, 23 Jun 2015 21:10:15 +0000 (21:10 +0000)]
PR22560: Fix argument order for ARM _MoveToCoprocessor builtins.

The Microsoft-extension _MoveToCoprocessor and _MoveToCoprocessor2
builtins take the register value to be moved as the first argument,
but the corresponding mcr and mcr2 LLVM intrinsics expect that value
to be the third argument. Handle this as a special case, while still
leaving those intrinsics as generic MSBuiltins. I considered the
alternative of handling these in EmitARMBuiltinExpr, but that does
not work well for the follow-up change that I'm going to make to improve
the error handling for PR22560 -- we need the GetBuiltinType() checks
for ICEArguments, and the ARM version of that code is only used for
Neon intrinsics where the last argument is special and not
checked in the normal way.

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

9 years agoPedantically rename all Tool subclasses to be nouns, not verbs. NFC
Douglas Katzman [Tue, 23 Jun 2015 20:42:09 +0000 (20:42 +0000)]
Pedantically rename all Tool subclasses to be nouns, not verbs. NFC

Classes in Tools.h inherit ultimately from Tool, which is a noun,
but subclasses of Tool were named for their operation, such as "Compile",
wherein the constructor call "Compile(args...)" could be misconstrued
as actually causing a compile to happen.

Likewise various other methods were not harmonious with their effect,
in that "BuildLinker()" returned a "new namespace::Link(...)"
instead of a "new namespace::Linker(...)" which it now does.

Exceptions: Clang and ClangAs are un-renamed. Those are their rightful names.
And there is no particulary great way to name the "Lipo-er" and a few others.

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

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

9 years ago[MS ABI] Account for the virtual inheritance quirk when mangling
David Majnemer [Tue, 23 Jun 2015 20:34:18 +0000 (20:34 +0000)]
[MS ABI] Account for the virtual inheritance quirk when mangling

Virtual inheritance member pointers are always relative to the vbindex,
even when the member pointer doesn't point into a virtual base.  This is
corrected by adjusting the non-virtual offset backwards from the vbptr
back to the top of the most derived class.  While we performed this
adjustment when manifesting member pointers as constants or when
performing conversions, we didn't perform the adjustment when mangling
them.

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

9 years agoInstrProf: Fix a crash when an implicit def appears in a macro
Justin Bogner [Tue, 23 Jun 2015 20:29:09 +0000 (20:29 +0000)]
InstrProf: Fix a crash when an implicit def appears in a macro

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

9 years agoMake the typo resolution in r240441 apply to all function calls.
Kaelyn Takata [Tue, 23 Jun 2015 19:13:17 +0000 (19:13 +0000)]
Make the typo resolution in r240441 apply to all function calls.

Regular function calls (such as to cabs()) run into the same problem
with handling dependent exprs, not just builtins with custom type
checking.

Fixes PR23775.

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

9 years agoEnsure delayed typos have been corrected in calls to builtins before
Kaelyn Takata [Tue, 23 Jun 2015 18:42:21 +0000 (18:42 +0000)]
Ensure delayed typos have been corrected in calls to builtins before
checking those calls when not in C++ mode, since those code paths can't
handle dependent exprs.

Fixes PR23740.

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

9 years agoUse AddString/ReadString instead of doing it manually NFC
Ben Langmuir [Tue, 23 Jun 2015 18:20:23 +0000 (18:20 +0000)]
Use AddString/ReadString instead of doing it manually NFC

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

9 years ago[Modules] Consider -fmodule-feature in module hash and when loading
Ben Langmuir [Tue, 23 Jun 2015 18:20:18 +0000 (18:20 +0000)]
[Modules] Consider -fmodule-feature in module hash and when loading

Any extra features from -fmodule-feature are part of the module hash and
need to get validated on load.  Also print them with -module-file-info.

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

9 years agoDriver: Pass -I options to cc1as for .include search paths.
Jim Grosbach [Tue, 23 Jun 2015 18:20:13 +0000 (18:20 +0000)]
Driver: Pass -I options to cc1as for .include search paths.

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

9 years agoAdding a title to appease the sphinx build bot.
Aaron Ballman [Tue, 23 Jun 2015 17:31:30 +0000 (17:31 +0000)]
Adding a title to appease the sphinx build bot.

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

9 years agoAttributeReference.rst is automatically generated by a server-side process currently...
Aaron Ballman [Tue, 23 Jun 2015 17:14:51 +0000 (17:14 +0000)]
AttributeReference.rst is automatically generated by a server-side process currently. To cut down on accidental commits to this file that are not properly reflected in AttrDocs.td (such as r215806 - r215808), this file now contains nothing but a comment explaining the current state of affairs.

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

9 years ago[OPENMP] Initial support for 'depend' clause (4.0).
Alexey Bataev [Tue, 23 Jun 2015 14:25:19 +0000 (14:25 +0000)]
[OPENMP] Initial support for 'depend' clause (4.0).

Parsing and sema analysis (without support for array sections in arguments) for 'depend' clause (used in 'task' directive, OpenMP 4.0).

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

9 years agoUpdate for LLVM api change.
Rafael Espindola [Tue, 23 Jun 2015 13:59:36 +0000 (13:59 +0000)]
Update for LLVM api change.

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

9 years agoMoving r215806, r215807, and r215808 into AttrDocs.td. These changes were originally...
Aaron Ballman [Tue, 23 Jun 2015 13:41:03 +0000 (13:41 +0000)]
Moving r215806, r215807, and r215808 into AttrDocs.td. These changes were originally applied to the RST file that is automatically generated by the server, and so the changes were never properly reflected online once the server overwrote AttributeReference.rst.

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

9 years agoFixing a build bot break from r240400.
Aaron Ballman [Tue, 23 Jun 2015 13:29:33 +0000 (13:29 +0000)]
Fixing a build bot break from r240400.

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

9 years agoClarify pointer ownership semantics by hoisting the std::unique_ptr creation to the...
Aaron Ballman [Tue, 23 Jun 2015 13:15:32 +0000 (13:15 +0000)]
Clarify pointer ownership semantics by hoisting the std::unique_ptr creation to the caller instead of hiding it in emitReport. NFC.

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

9 years agoFix a warning. [-Wsign-compare]
NAKAMURA Takumi [Tue, 23 Jun 2015 10:01:20 +0000 (10:01 +0000)]
Fix a warning. [-Wsign-compare]

FIXME: Should "Level" be unsigned?

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

9 years agoSilence VC warning C4715: '`anonymous namespace'::getNativeVectorSizeForA VXABI' :
Yaron Keren [Tue, 23 Jun 2015 09:45:42 +0000 (09:45 +0000)]
Silence VC warning C4715: '`anonymous namespace'::getNativeVectorSizeForA VXABI' :
not all control paths return a value.

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

9 years agoWrite output file to temp directory. The tests shouldn't assume that
Daniel Jasper [Tue, 23 Jun 2015 09:26:37 +0000 (09:26 +0000)]
Write output file to temp directory. The tests shouldn't assume that
they can write to the current working directory.

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

9 years agoTweak clang/test/Modules/modules-with-same-name.m to run with GnuWin32's find.exe...
NAKAMURA Takumi [Tue, 23 Jun 2015 08:37:21 +0000 (08:37 +0000)]
Tweak clang/test/Modules/modules-with-same-name.m to run with GnuWin32's find.exe on newer version of Windows.

It seems "*.pcm" would be expanded with current directory by NTOS 6.x's msvcrt. GnuWin32 utils are affected.
To avoid the issue, put an expression that msvcrt's glob won't match, like "*.pc[m]".

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

9 years ago[MS ABI] Rework member pointer conversion
David Majnemer [Tue, 23 Jun 2015 07:31:11 +0000 (07:31 +0000)]
[MS ABI] Rework member pointer conversion

Member pointers in the MS ABI are made complicated due to the following:
- Virtual methods in the most derived class (MDC) might live in a
  vftable in a virtual base.
- There are four different representations of member pointer: single
  inheritance, multiple inheritance, virtual inheritance and the "most
  general" representation.
- Bases might have a *more* general representation than classes which
  derived from them, a most surprising result.

We believed that we could treat all member pointers as-if they were a
degenerate case of the multiple inheritance model.  This fell apart once
we realized that implementing standard member pointers using this ABI
requires referencing members with a non-zero vbindex.

On a bright note, all but the virtual inheritance model operate rather
similarly.  The virtual inheritance member pointer representation
awkwardly requires a virtual base adjustment in order to refer to
entities in the MDC.

However, the first virtual base might be quite far from the start of the
virtual base.  This means that we must add a negative non-virtual
displacement.

However, things get even more complicated.  The most general
representation interprets vbindex zero differently from the virtual
inheritance model: it doesn't reference the vbtable at all.

It turns out that this complexity can increase for quite some time:
consider a derived to base conversion from the most general model to the
multiple inheritance model...

To manage this complexity we introduce a concept of "normalized" member
pointer which allows us to treat all three models as the most general
model.  Then we try to figure out how to map this generalized member
pointer onto the destination member pointer model.  I've done my best to
furnish the code with comments explaining why each adjustment is
performed.

This fixes PR23878.

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

9 years ago[MS ABI] Refactor member pointer generation
David Majnemer [Tue, 23 Jun 2015 07:31:07 +0000 (07:31 +0000)]
[MS ABI] Refactor member pointer generation

The MS ABI has very complicated member pointers.  Don't attempt to
synthesize the final member pointer ab ovo usque ad mala in one go.

Instead, start with a member pointer which points to the declaration in
question as-if it's decl context was the target class.  Then, utilize
our conversion logical to convert it to the target type.

This allows us to simplify how we think about member pointers because we
don't need to consider non-zero nv adjustments before we even generate
the member pointer.  Furthermore, it gives our adjustment logic more
exposure by utilizing it in a common path.

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

9 years ago[CodeGen] Rename EmitMemberPointer to EmitMemberFunctionPointer
David Majnemer [Tue, 23 Jun 2015 07:31:01 +0000 (07:31 +0000)]
[CodeGen] Rename EmitMemberPointer to EmitMemberFunctionPointer

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

9 years ago[OPENMP] Do not emit references to original variables in 'private' clause.
Alexey Bataev [Tue, 23 Jun 2015 04:51:00 +0000 (04:51 +0000)]
[OPENMP] Do not emit references to original variables in 'private' clause.

Currently if the variable is captured in captured region, capture record for this region stores reference to this variable for future use. But we don't need to provide the reference to the original variable if it was explicitly marked as private in the 'private' clause of the OpenMP construct, this variable is replaced by private copy.
Differential Revision: http://reviews.llvm.org/D9550

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

9 years agoEliminate "enumeration value not handled in switch" warnings
Douglas Katzman [Tue, 23 Jun 2015 04:20:44 +0000 (04:20 +0000)]
Eliminate "enumeration value not handled in switch" warnings

(Caused by r240370)

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

9 years agoChange some if/else chains to 'switch' statements. NFC
Douglas Katzman [Tue, 23 Jun 2015 03:02:39 +0000 (03:02 +0000)]
Change some if/else chains to 'switch' statements. NFC

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

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

9 years agoRevert r240270 ("Fixed/added namespace ending comments using clang-tidy").
Alexander Kornienko [Mon, 22 Jun 2015 23:07:51 +0000 (23:07 +0000)]
Revert r240270 ("Fixed/added namespace ending comments using clang-tidy").

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

9 years ago[modules] When building a module, if there are multiple matches for a header
Richard Smith [Mon, 22 Jun 2015 22:20:47 +0000 (22:20 +0000)]
[modules] When building a module, if there are multiple matches for a header
file in the loaded module maps and one of them is from the current module,
that's the right match.

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

9 years agoUpdate for LLVM API change to return by InputArgList directly (rather than by pointer...
David Blaikie [Mon, 22 Jun 2015 22:07:27 +0000 (22:07 +0000)]
Update for LLVM API change to return by InputArgList directly (rather than by pointer) from ParseArgs

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

9 years ago[CodeGen] Teach X86_64ABIInfo about AVX512.
Ahmed Bougacha [Mon, 22 Jun 2015 21:31:43 +0000 (21:31 +0000)]
[CodeGen] Teach X86_64ABIInfo about AVX512.

As specified in the SysV AVX512 ABI drafts. It follows the same scheme
as AVX2:

    Arguments of type __m512 are split into eight eightbyte chunks.
    The least significant one belongs to class SSE and all the others
    to class SSEUP.

This also means we change the OpenMP SIMD default alignment on AVX512.

Based on r240337.
Differential Revision: http://reviews.llvm.org/D9894

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

9 years ago[CodeGen] Use enum for AVX level in X86*TargetCodeGenInfo. NFCI.
Ahmed Bougacha [Mon, 22 Jun 2015 21:30:39 +0000 (21:30 +0000)]
[CodeGen] Use enum for AVX level in X86*TargetCodeGenInfo. NFCI.

Follow-up to r237989: expressing the AVX level as an enum makes it
simple to extend it with AVX512.

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

9 years ago[modules] Add a flag to disable the feature that permits conflicting redefinitions...
Richard Smith [Mon, 22 Jun 2015 21:15:01 +0000 (21:15 +0000)]
[modules] Add a flag to disable the feature that permits conflicting redefinitions of internal-linkage symbols that are not visible.

Such conflicts are an accident waiting to happen, and this feature conflicts
with the desire to include existing headers into multiple modules and merge the
results. (In an ideal world, it should not be possible to export internal
linkage symbols from a module, but sadly the glibc and libstdc++ headers
provide 'static inline' functions in a few cases.)

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

9 years agoAdd comment about the importance of being adjacent. NFC
Douglas Katzman [Mon, 22 Jun 2015 20:55:31 +0000 (20:55 +0000)]
Add comment about the importance of being adjacent. NFC

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

9 years agotest: Set lit features appropriately when using asan and ubsan together
Justin Bogner [Mon, 22 Jun 2015 18:47:10 +0000 (18:47 +0000)]
test: Set lit features appropriately when using asan and ubsan together

The asan/not_asan and ubsan/not_ubsan features weren't being set
correctly when LLVM_USE_SANITIZER is set to 'Address;Undefined'. Fix
this by doing substring instead of exact matching. Also simplify the
msan check for consistency.

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

9 years ago[modules] Include merged definition information in AST dumps.
Richard Smith [Mon, 22 Jun 2015 18:47:01 +0000 (18:47 +0000)]
[modules] Include merged definition information in AST dumps.

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

9 years agoMisc. cleanups suggested by Aaron Ballman
Douglas Gregor [Mon, 22 Jun 2015 17:19:03 +0000 (17:19 +0000)]
Misc. cleanups suggested by Aaron Ballman

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

9 years agoDocument the nullability attributes.
Douglas Gregor [Mon, 22 Jun 2015 17:06:56 +0000 (17:06 +0000)]
Document the nullability attributes.

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

9 years agoDon't use &* when get() will suffice; NFC.
Aaron Ballman [Mon, 22 Jun 2015 13:28:21 +0000 (13:28 +0000)]
Don't use &* when get() will suffice; NFC.

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

9 years agoFixed/added namespace ending comments using clang-tidy. NFC
Alexander Kornienko [Mon, 22 Jun 2015 09:47:44 +0000 (09:47 +0000)]
Fixed/added namespace ending comments using clang-tidy. NFC

The patch is generated using this command:

  $ tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \
      -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \
      work/llvm/tools/clang

To reduce churn, not touching namespaces spanning less than 10 lines.

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

9 years agoRemove incomplete comment.
Davide Italiano [Mon, 22 Jun 2015 01:19:59 +0000 (01:19 +0000)]
Remove incomplete comment.

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

9 years agoSema: add a helper for enumerating the TST id (NFC)
Saleem Abdulrasool [Sun, 21 Jun 2015 23:05:52 +0000 (23:05 +0000)]
Sema: add a helper for enumerating the TST id (NFC)

The same pattern was repeated a few times.  Create a trivial helper method to
map the Type Specifier to an ID for the diagnostic.  Flip the selection order on
one of the diagnostic messages to get the same ordering across all of the
messages.  This makes the emission of the diagnostic slightly more legible by
changing the cascading ternary into a switch in a function.  NFC.

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

9 years agoClean up CLCompatOptions.td a bit.
Nico Weber [Sun, 21 Jun 2015 20:49:05 +0000 (20:49 +0000)]
Clean up CLCompatOptions.td a bit.

Move /Qvec flags from the "// Non-aliases:" section up to the "// Aliases:"
section since the flags are just aliases.  For the same reason, move the
/vm flags the other way.  Also reflow a few lines to 80 columns.

No behavior change.

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

9 years agoASTReader: Treat InputFileOffsets as unaligned to avoid UB
Justin Bogner [Sun, 21 Jun 2015 20:32:40 +0000 (20:32 +0000)]
ASTReader: Treat InputFileOffsets as unaligned to avoid UB

This is a better approach to fixing the undefined behaviour I tried to
fix in r240228. This data doesn't necessarily have suitable alignment
for uint64_t, so use unaligned_uint64_t instead.

This fixes 225 test failures when clang is built with ubsan.

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

9 years agoRevert "ASTReader: Copy input file offset data to avoid unaligned accesses"
Justin Bogner [Sun, 21 Jun 2015 20:32:36 +0000 (20:32 +0000)]
Revert "ASTReader: Copy input file offset data to avoid unaligned accesses"

We can do this better by changing the type to unaligned_uint64_t and
paying the cost on use instead of up front.

This reverts r240228

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

9 years agoSema: convert decl + while loop into for loop (NFC)
Saleem Abdulrasool [Sun, 21 Jun 2015 18:20:01 +0000 (18:20 +0000)]
Sema: convert decl + while loop into for loop (NFC)

Convert a hand rolled for loop into an explicit for loop.  NFC.

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

9 years ago[Codegen] Don't crash if destructor is not accessible.
Davide Italiano [Sun, 21 Jun 2015 16:33:50 +0000 (16:33 +0000)]
[Codegen] Don't crash if destructor is not accessible.

Testcase provided, in the PR, by Christian Shelton and
reduced by David Majnemer.

PR: 23584
Differential Revision: http://reviews.llvm.org/D10508
Reviewed by: rnk

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

9 years agoArrayRef-ify ParseArgs
David Blaikie [Sun, 21 Jun 2015 06:32:36 +0000 (06:32 +0000)]
ArrayRef-ify ParseArgs

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

9 years agoASTReader: Copy input file offset data to avoid unaligned accesses
Justin Bogner [Sat, 20 Jun 2015 22:31:04 +0000 (22:31 +0000)]
ASTReader: Copy input file offset data to avoid unaligned accesses

We interpret Blob as an array of uint64_t here, but there's no reason
to think that it has suitable alignment. Instead, read the data in in
an alignment-safe way and store it in a std::vector.

This fixes 225 test failures when clang is built with ubsan.

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

9 years agoIntroduce a PCHContainerOperations interface (NFC).
Adrian Prantl [Sat, 20 Jun 2015 18:53:08 +0000 (18:53 +0000)]
Introduce a PCHContainerOperations interface (NFC).

A PCHContainerOperations abstract interface provides operations for
creating and unwrapping containers for serialized ASTs (precompiled
headers and clang modules). The default implementation is
RawPCHContainerOperations, which uses a flat file for the output.

The main application for this interface will be an
ObjectFilePCHContainerOperations implementation that uses LLVM to
wrap the module in an ELF/Mach-O/COFF container to store debug info
alongside the AST.

rdar://problem/20091852

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

9 years agoAvoid clearing an empty PrioritizedCXXGlobalInits, NFC
Yaron Keren [Sat, 20 Jun 2015 15:51:52 +0000 (15:51 +0000)]
Avoid clearing an empty PrioritizedCXXGlobalInits, NFC

We already test for PrioritizedCXXGlobalInits being non-empty
and process it so it makes sense to clear it only in that if.

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

9 years agoASTContext.h: Fix utf8 chars in comments.
NAKAMURA Takumi [Sat, 20 Jun 2015 04:20:23 +0000 (04:20 +0000)]
ASTContext.h: Fix utf8 chars in comments.

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

9 years agoSemaDeclObjC.cpp: Escape '@' in the comment. [-Wdocumentation]
NAKAMURA Takumi [Sat, 20 Jun 2015 03:52:52 +0000 (03:52 +0000)]
SemaDeclObjC.cpp: Escape '@' in the comment. [-Wdocumentation]

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

9 years ago[modules] When determining whether a definition of a class is visible, check all...
Richard Smith [Sat, 20 Jun 2015 01:05:19 +0000 (01:05 +0000)]
[modules] When determining whether a definition of a class is visible, check all modules even if we've already found a definition that's not visible.

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

9 years ago[modules] Refactor and slightly simplify class definition merging.
Richard Smith [Sat, 20 Jun 2015 00:22:34 +0000 (00:22 +0000)]
[modules] Refactor and slightly simplify class definition merging.

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

9 years agoSuppress bogus gcc -Wreturn-type warnings.
Nico Weber [Sat, 20 Jun 2015 00:06:30 +0000 (00:06 +0000)]
Suppress bogus gcc -Wreturn-type warnings.

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

9 years agoYet another MSVC-related fix.
Douglas Gregor [Fri, 19 Jun 2015 23:59:55 +0000 (23:59 +0000)]
Yet another MSVC-related fix.

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

9 years agoTry to fix the MSVC build
Douglas Gregor [Fri, 19 Jun 2015 23:18:05 +0000 (23:18 +0000)]
Try to fix the MSVC build

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

9 years agoStop moving attributes off of a block literal's decl specifiers.
Douglas Gregor [Fri, 19 Jun 2015 23:18:03 +0000 (23:18 +0000)]
Stop moving attributes off of a block literal's decl specifiers.

These usually apply to the return type. At one point this was necessary to
get some of them to apply to the entire block, but it appears that's working
anyway (see block-return.c).

rdar://problem/20468034

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

9 years agoHandle 'instancetype' in ParseDeclarationSpecifiers.
Douglas Gregor [Fri, 19 Jun 2015 23:18:00 +0000 (23:18 +0000)]
Handle 'instancetype' in ParseDeclarationSpecifiers.

...instead of as a special case in ParseObjCTypeName with lots of
duplicated logic. Besides being a nice refactoring, this also allows
"- (instancetype __nonnull)self" in addition to "- (nonnull instancetype)self".

rdar://problem/19924646

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

9 years agoMake -Wnullability-completeness work with -Wsystem-headers.
Douglas Gregor [Fri, 19 Jun 2015 23:17:55 +0000 (23:17 +0000)]
Make -Wnullability-completeness work with -Wsystem-headers.

rdar://problem/21134250

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

9 years agoCF_RETURNS_[NOT_]RETAINED on a param makes the inner pointer __nullable.
Douglas Gregor [Fri, 19 Jun 2015 23:17:51 +0000 (23:17 +0000)]
CF_RETURNS_[NOT_]RETAINED on a param makes the inner pointer __nullable.

That is,

  void cf2(CFTypeRef * __nullable p CF_RETURNS_NOT_RETAINED);

is equivalent to

  void cf2(CFTypeRef __nullable * __nullable p CF_RETURNS_NOT_RETAINED);

More rdar://problem/18742441

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

9 years agoAllow the cf_returns_[not_]retained attributes to appear on out-parameters.
Douglas Gregor [Fri, 19 Jun 2015 23:17:46 +0000 (23:17 +0000)]
Allow the cf_returns_[not_]retained attributes to appear on out-parameters.

Includes a simple static analyzer check and not much else, but we'll also
be able to take advantage of this in Swift.

This feature can be tested for using __has_feature(cf_returns_on_parameters).

This commit also contains two fixes:
- Look through non-typedef sugar when deciding whether something is a CF type.
- When (cf|ns)_returns(_not)?_retained is applied to invalid properties,
  refer to "property" instead of "method" in the error message.

rdar://problem/18742441

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

9 years ago[Sanitizers] Provide better diagnostic for sanitizers unsupported for target triple.
Alexey Samsonov [Fri, 19 Jun 2015 21:36:47 +0000 (21:36 +0000)]
[Sanitizers] Provide better diagnostic for sanitizers unsupported for target triple.

Introduce ToolChain::getSupportedSanitizers() that would return the set
of sanitizers available on given toolchain. By default, these are
sanitizers which don't necessarily require runtime support and are
not toolchain- or architecture-dependent.

Sanitizers (ASan, DFSan, TSan, MSan etc.) which cannot function
without runtime library are marked as supported only on platforms
for which we actually build these runtimes.

This would allow more fine-grained checks in the future: for instance,
we have to restrict availability of -fsanitize=vptr to Mac OS 10.9+
(PR23539).

Update test cases accrodingly: add tests for certain unsupported
configurations, remove test cases for -fsanitize=vptr + PS4
integration, as we don't build the runtime for PS4 at the moment.

This change was first submitted as r239953 and reverted in r239958.
The problem was and still is in Darwin toolchains, which get the
knowledge about target platform too late after initializaition, while
now we require this information when ToolChain::getSanitizerArgs() is
called. r240170 works around this issue.

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

9 years agoFix a use of err_nullability_conflicting that's triggering an assertion.
Douglas Gregor [Fri, 19 Jun 2015 20:00:10 +0000 (20:00 +0000)]
Fix a use of err_nullability_conflicting that's triggering an assertion.

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

9 years ago[CFI] Require -flto instead of implying it.
Alexey Samsonov [Fri, 19 Jun 2015 19:57:46 +0000 (19:57 +0000)]
[CFI] Require -flto instead of implying it.

Summary:
This is unfortunate, but would let us land http://reviews.llvm.org/D10467,
that makes ToolChains responsible for computing the set of sanitizers
they support.

Unfortunately, Darwin ToolChains doesn't know about actual OS they
target until ToolChain::TranslateArgs() is called. In particular, it
means we won't be able to construct SanitizerArgs for these ToolChains
before that.

This change removes SanitizerArgs::needsLTO() method, so that now
ToolChain::IsUsingLTO(), which is called very early, doesn't need
SanitizerArgs to implement this method.

Docs and test cases are updated accordingly. See
https://llvm.org/bugs/show_bug.cgi?id=23539, which describes why we
start all these.

Test Plan: regression test suite

Reviewers: pcc

Subscribers: cfe-commits

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

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

9 years agoCode completion for nullability type specifiers.
Douglas Gregor [Fri, 19 Jun 2015 18:27:52 +0000 (18:27 +0000)]
Code completion for nullability type specifiers.

Another part of rdar://problem/18868820.

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

9 years agoCheck for consistent use of nullability type specifiers in a header.
Douglas Gregor [Fri, 19 Jun 2015 18:27:45 +0000 (18:27 +0000)]
Check for consistent use of nullability type specifiers in a header.

Adds a new warning (under -Wnullability-completeness) that complains
about pointer, block pointer, or member pointer declarations that have
not been annotated with nullability information (directly or inferred)
within a header that contains some nullability annotations. This is
intended to be used to help maintain the completeness of nullability
information within a header that has already been audited.

Note that, for performance reasons, this warning will underrepresent
the number of non-annotated pointers in the case where more than one
pointer is seen before the first nullability type specifier, because
we're only tracking one piece of information per header. Part of
rdar://problem/18868820.

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