]> granicus.if.org Git - clang/log
clang
8 years ago[OPENMP] Add option '-fopenmp-version=[31|40|45]' allowing choosing
Alexey Bataev [Thu, 26 May 2016 11:10:11 +0000 (11:10 +0000)]
[OPENMP] Add option '-fopenmp-version=[31|40|45]' allowing choosing
OpenMP version.

If '-fopenmp' option is provided '-fopenmp-version=' allows to control,
which version of OpenMP must be supported. Currently it affects only the
value of _OPENMP define.

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

8 years ago[X86][F16C] Improved f16c intrinsics checks
Simon Pilgrim [Thu, 26 May 2016 10:20:25 +0000 (10:20 +0000)]
[X86][F16C] Improved f16c intrinsics checks

Added checks for upper elements being zero'd in scalar conversions

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

8 years ago[MSVC] Support for __unaligned qualifier in functions
Andrey Bokhanko [Thu, 26 May 2016 10:06:01 +0000 (10:06 +0000)]
[MSVC] Support for __unaligned qualifier in functions

This implements support for MS-specific __unaligned qualifier in functions and
makes the following test case both compile and mangle correctly:

struct S {
    void f() __unaligned;
};
void S::f() __unaligned {
}

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

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

8 years ago[X86][AVX2] Improved checks for float/double mask generation for non-masked gathers
Simon Pilgrim [Thu, 26 May 2016 09:56:50 +0000 (09:56 +0000)]
[X86][AVX2] Improved checks for float/double mask generation for non-masked gathers

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

8 years agoFix instrinsics names:
Michael Zuckerman [Thu, 26 May 2016 08:10:12 +0000 (08:10 +0000)]
Fix instrinsics names:
_mm128_cmp_ps_mask-->_mm_cmp_ps_mask
_mm128_mask_cmp_ps_mask-->_mm_mask_cmp_ps_mask
_mm128_cmp_pd_mask-->_mm_cmp_pd_mask
_mm128_mask_cmp_pd_mask-->_mm_mask_cmp_pd_mask

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

8 years ago[Clang][AVX512][BUILTIN] Adding intrinsics for set1
Michael Zuckerman [Thu, 26 May 2016 06:54:52 +0000 (06:54 +0000)]
[Clang][AVX512][BUILTIN] Adding intrinsics for set1

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

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

8 years ago[OPENMP] Set '_OPENMP' macro to '201511' value to reflect support for
Alexey Bataev [Thu, 26 May 2016 04:56:05 +0000 (04:56 +0000)]
[OPENMP] Set '_OPENMP' macro to '201511' value to reflect support for
OpenMP 4.5.

According to OpenMP 4.5 the _OPENMP macro name is defined to have the decimal value yyyymm where yyyy and mm are the year and month designations of the version of the OpenMP API that the implementation supports. Clang supports OpenMP 4.5 so updated value of _OPENMP macro to 201511.

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

8 years agoDon't feed standard error to FileCheck.
Akira Hatanaka [Thu, 26 May 2016 02:32:10 +0000 (02:32 +0000)]
Don't feed standard error to FileCheck.

This is an attempt to fix the buildbot that started failing after
r270808.

http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/13141

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

8 years ago[ObjC] Remove _Atomic from return type and parameter type of
Akira Hatanaka [Thu, 26 May 2016 00:37:30 +0000 (00:37 +0000)]
[ObjC] Remove _Atomic from return type and parameter type of
objective-c properties.

This fixes an assert in CodeGen that fires when the getter and setter
functions for an objective-c property of type _Atomic(_Bool) are
synthesized.

rdar://problem/26322972

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

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

8 years ago[Sema] Use the failure bits introduced by r270781.
George Burgess IV [Wed, 25 May 2016 22:38:36 +0000 (22:38 +0000)]
[Sema] Use the failure bits introduced by r270781.

r270781 introduced the ability to track whether or not we might have
had unmodeled side-effects during constant expression evaluation. This
patch makes the constexpr evaluator use that tracking.

Reviewed as a part of D18540.

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

8 years ago[Sema] Note when we encounter a problem in ExprConstant.
George Burgess IV [Wed, 25 May 2016 22:31:54 +0000 (22:31 +0000)]
[Sema] Note when we encounter a problem in ExprConstant.

Currently, the constexpr evaluator is very conservative about unmodeled
side-effects when we're evaluating an expression in a mode that allows
such side-effects.

This patch makes us note when we might have actually encountered an
unmodeled side-effect, which allows us to be more accurate when we know
an unmodeled side-effect couldn't have occurred.

This patch has been split into two commits; this one primarily
introduces the bits necessary to track whether we might have potentially
hit such a side-effect. The one that actually does the tracking (which
boils down to more or less a rename of keepEvaluatingAfterFailure to
noteFailure) is coming soon.

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

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

8 years ago[CGDebugInfo] Modify the preferred expression location for member calls.
Hal Finkel [Wed, 25 May 2016 22:08:27 +0000 (22:08 +0000)]
[CGDebugInfo] Modify the preferred expression location for member calls.

If the callee has a valid location (not all do), then use that. Otherwise, fall
back to the starting location. This makes sure that the debug info for calls
points to the call (not the start of the expression providing the object on
which the member function is being called).

For example, given this:

  f->foo()->bar();

we don't want both calls to point to the 'f', but rather to the 'foo()' and
the 'bar()'.

Fixes PR27567.

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

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

8 years agoFix rejects-valid on constexpr function that accesses a not-yet-defined 'extern
Richard Smith [Wed, 25 May 2016 22:06:25 +0000 (22:06 +0000)]
Fix rejects-valid on constexpr function that accesses a not-yet-defined 'extern
const' variable. That variable might be defined as 'constexpr', so we cannot
prove that a use of it could never be a constant expression.

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

8 years agoAdd a loop's debug location to its llvm.loop metadata
Hal Finkel [Wed, 25 May 2016 21:53:24 +0000 (21:53 +0000)]
Add a loop's debug location to its llvm.loop metadata

Getting accurate locations for loops is important, because those locations are
used by the frontend to generate optimization remarks. Currently, optimization
remarks for loops often appear on the wrong line, often the first line of the
loop body instead of the loop itself. This is confusing because that line might
itself be another loop, or might be somewhere else completely if the body was
an inlined function call. This happens because of the way we find the loop's
starting location. First, we look for a preheader, and if we find one, and its
terminator has a debug location, then we use that. Otherwise, we look for a
location on an instruction in the loop header.

The fallback heuristic is not bad, but will almost always find the beginning of
the body, and not the loop statement itself. The preheader location search
often fails because there's often not a preheader, and even when there is a
preheader, depending on how it was formed, it sometimes carries the location of
some preceeding code.

I don't see any good theoretical way to fix this problem. On the other hand,
this seems like a straightforward solution: Put the debug location in the
loop's llvm.loop metadata. When emitting debug information, this commit causes
us to add the debug location as an operand to each loop's llvm.loop metadata.
Thus, we now generate this metadata for all loops (not just loops with
optimization hints) when we're otherwise generating debug information.

The remark test case changes depend on the companion LLVM commit r270771.

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

8 years agoRevert r270748 "clang-cl: Treat dllimport explicit template instantiation definitions...
Hans Wennborg [Wed, 25 May 2016 20:49:14 +0000 (20:49 +0000)]
Revert r270748 "clang-cl: Treat dllimport explicit template instantiation definitions as declarations (PR27810, PR27811)"

It seems to have broken the sanitizer-windows bot.
Reverting while investigating.

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

8 years agoclang-cl: Treat dllimport explicit template instantiation definitions as declarations...
Hans Wennborg [Wed, 25 May 2016 20:16:43 +0000 (20:16 +0000)]
clang-cl: Treat dllimport explicit template instantiation definitions as declarations (PR27810, PR27811)

This matches what MSVC does, and should make compiles faster by avoiding to
unnecessarily emit a lot of code.

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

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

8 years agoUse new triple API to check comdat /NFC
Xinliang David Li [Wed, 25 May 2016 17:25:57 +0000 (17:25 +0000)]
Use new triple API to check comdat /NFC

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

8 years ago[X86][AVX2] Full set of AVX2 intrinsics tests
Simon Pilgrim [Wed, 25 May 2016 15:10:49 +0000 (15:10 +0000)]
[X86][AVX2] Full set of AVX2 intrinsics tests

llvm/test/CodeGen/X86/avx2-intrinsics-fast-isel.ll will be synced to this

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

8 years ago[Clang][AVX512][Builtin] Fix palignr intrinsics header
Michael Zuckerman [Wed, 25 May 2016 15:05:03 +0000 (15:05 +0000)]
[Clang][AVX512][Builtin] Fix palignr intrinsics header

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

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

8 years ago[AVX512] Don't rely on value names. They're different in release builds.
Benjamin Kramer [Wed, 25 May 2016 14:30:01 +0000 (14:30 +0000)]
[AVX512] Don't rely on value names. They're different in release builds.

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

8 years agoFix mangled name of method with ns_consumed parameters.
Nico Weber [Wed, 25 May 2016 14:15:08 +0000 (14:15 +0000)]
Fix mangled name of method with ns_consumed parameters.

When a function/method use a parameter with "ns_consumed" attribute,
ensure that the mangled name is the same whether -fobjc-arc is used
or not.

Since "ns_consumed" attribute is generally used to inform ARC that
a function/method does sink the reference, it mean it is usually
implemented in a compilation unit compiled without -fobjc-arc but
used form a compilation unit compiled with it.

Originally found while trying to use "ns_consumed" attribute in an
Objective-C++ file in Chromium (http://crbug.com/599980) where it
caused a linker error.

Regression introduced by revision 262278 (previously the attribute
was incorrectly not part of the mangled name).

Patch from Sylvain Defresne <sdefresne@chromium.org>!
http://reviews.llvm.org/D20113

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

8 years ago[Clang][AVX512][BUILTIN] Add missing intrinsics for cast
Michael Zuckerman [Wed, 25 May 2016 14:04:21 +0000 (14:04 +0000)]
[Clang][AVX512][BUILTIN] Add missing intrinsics for cast

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

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

8 years agoFix build problem in MSVC
Alexey Bataev [Wed, 25 May 2016 12:51:24 +0000 (12:51 +0000)]
Fix build problem in MSVC

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

8 years agoRevert "[AArch64] Using new TargetParser in Clang"
Renato Golin [Wed, 25 May 2016 12:36:31 +0000 (12:36 +0000)]
Revert "[AArch64] Using new TargetParser in Clang"

This reverts commit r270688 and r270689. The issue is not a random order, but a
different order for some targets and others (prob. Linux vs Darwin). Reverting until
we have a better fix.

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

8 years ago[OPENMP 4.5] Codegen for dacross loop synchronization constructs.
Alexey Bataev [Wed, 25 May 2016 12:36:08 +0000 (12:36 +0000)]
[OPENMP 4.5] Codegen for dacross loop synchronization constructs.

OpenMP 4.5 adds support for doacross loop synchronization. Patch
implements codegen for this construct.

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

8 years ago[AArch64] Try to fix test from r270688 with unordered output
Renato Golin [Wed, 25 May 2016 12:16:28 +0000 (12:16 +0000)]
[AArch64] Try to fix test from r270688 with unordered output

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

8 years ago[AArch64] Using new TargetParser in Clang
Renato Golin [Wed, 25 May 2016 12:02:58 +0000 (12:02 +0000)]
[AArch64] Using new TargetParser in Clang

Using AArch64TargetParser in clang to avoid repetitive string parsing.

Use TargetParser to do ARCH/CPU/ArchExt parsing instead of local implementation.

Patch by Jojo Ma.

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

8 years ago[ms][dll] #26935 Defining a dllimport function should cause it to be exported
Denis Zobnin [Wed, 25 May 2016 11:32:42 +0000 (11:32 +0000)]
[ms][dll] #26935 Defining a dllimport function should cause it to be exported

If we have some function with dllimport attribute and then we have the function
definition in the same module but without dllimport attribute we should add
dllexport attribute to this function definition.
The same should be done for variables.

Example:
struct __declspec(dllimport) C3 {
  ~C3();
};
C3::~C3() {;} // we should export this definition.

Patch by Andrew V. Tischenko

Differential revision: http://reviews.llvm.org/D18953

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

8 years ago[X86][SSE] Updated _mm_store_ps1 test to match _mm_store1_ps
Simon Pilgrim [Wed, 25 May 2016 09:20:08 +0000 (09:20 +0000)]
[X86][SSE] Updated _mm_store_ps1 test to match _mm_store1_ps

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

8 years agoRename a variable to avoid shadowing function parameter. NFC.
Bob Wilson [Wed, 25 May 2016 05:42:00 +0000 (05:42 +0000)]
Rename a variable to avoid shadowing function parameter. NFC.

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

8 years agoarc-repeated-use-of-weak should not warn about IBOutlet properties
Bob Wilson [Wed, 25 May 2016 05:41:57 +0000 (05:41 +0000)]
arc-repeated-use-of-weak should not warn about IBOutlet properties

Revision r211132 was supposed to disable -Warc-repeated-use-of-weak for
Objective-C properties marked with the IBOutlet attribute. Those properties
are supposed to be weak but they are only accessed from the main thread
so there is no risk of asynchronous updates setting them to nil. That
combination makes -Warc-repeated-use-of-weak very noisy. The previous
change only handled one kind of access to weak IBOutlet properties.
Instead of trying to add checks for all the different kinds of property
accesses, this patch removes the previous special case check and adds a
check at the point where the diagnostic is reported. rdar://21366461

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

8 years ago[X86] Update test cases to make sure storeu builtins use the storeu instrinsics....
Craig Topper [Wed, 25 May 2016 05:26:23 +0000 (05:26 +0000)]
[X86] Update test cases to make sure storeu builtins use the storeu instrinsics. We were previously matching on other stores in the IR from this being an -O0 test.

We should probably look into making the storeu builtins just emit a normal store with an alignment of 1.

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

8 years agoclang-cl: Fix unused argument warning when combining /O2 and /Ob2
Hans Wennborg [Wed, 25 May 2016 00:43:45 +0000 (00:43 +0000)]
clang-cl: Fix unused argument warning when combining /O2 and /Ob2

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

8 years ago[esan|wset] Add working set tool driver flags
Derek Bruening [Wed, 25 May 2016 00:41:24 +0000 (00:41 +0000)]
[esan|wset] Add working set tool driver flags

Summary:
Adds a new -fsanitize=efficiency-working-set flag to enable esan's working
set tool.  Adds appropriate tests for the new flag.

Reviewers: aizatsky

Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits

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

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

8 years agodocs: Document how safestack handles setjmp and exceptions.
Peter Collingbourne [Tue, 24 May 2016 23:38:02 +0000 (23:38 +0000)]
docs: Document how safestack handles setjmp and exceptions.

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

8 years agoRename test/CodeGen/inline-optim.cc to .c and provide a triple
Hans Wennborg [Tue, 24 May 2016 23:37:56 +0000 (23:37 +0000)]
Rename test/CodeGen/inline-optim.cc to .c and provide a triple

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

8 years agoMake the altivec intrinsics that require immediate constant propagation
Eric Christopher [Tue, 24 May 2016 22:25:06 +0000 (22:25 +0000)]
Make the altivec intrinsics that require immediate constant propagation
macros rather than functions.

Unfortunately couldn't come up with a simple testcase that didn't need
code generation to verify what was going on.

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

8 years ago[ms] Allow more unqualified lookup of types in dependent base classes
Reid Kleckner [Tue, 24 May 2016 21:23:54 +0000 (21:23 +0000)]
[ms] Allow more unqualified lookup of types in dependent base classes

Summary:
In dependent contexts where we know a type name is required, such as a
new expression, we can recover by forming a DependentNameType.

This generalizes our existing compatibility hack for default arguments
for template type parameters.

Works towards parsing atlctrlw.h, which is PR26748.

Reviewers: avt77, rsmith

Subscribers: cfe-commits

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

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

8 years agoclang-cl: Bake /Ob0 and /Ob2 into the general /O option handling
Hans Wennborg [Tue, 24 May 2016 21:23:29 +0000 (21:23 +0000)]
clang-cl: Bake /Ob0 and /Ob2 into the general /O option handling

This is a follow-up to r270609, wherein I forgot that /O options can
be combined, and e.g. /Odb2 is a valid combination.

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

8 years ago[Driver] Add support for -finline-functions and /Ob2 flags
Hans Wennborg [Tue, 24 May 2016 20:40:51 +0000 (20:40 +0000)]
[Driver] Add support for -finline-functions and /Ob2 flags

-finline-functions and /Ob2 are currently ignored by Clang. The only way to
enable inlining is to use the global O flags, which also enable other options,
or to emit LLVM bitcode using Clang, then running opt by hand with the inline
pass.

This patch allows to simply use the -finline-functions flag (same as GCC) or
/Ob2 in clang-cl mode to enable inlining without other optimizations.

This is the first patch of a serie to improve support for the /Ob flags.

Patch by Rudy Pons <rudy.pons@ilod.org>!

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

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

8 years ago[RecordLayout] Use an ASTVector instead of using a separate pointer and counter
David Majnemer [Tue, 24 May 2016 18:10:50 +0000 (18:10 +0000)]
[RecordLayout] Use an ASTVector instead of using a separate pointer and counter

No functional change is intended.

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

8 years agoRevert "[Lex] Support more type-traits in __has_feature"
David Majnemer [Tue, 24 May 2016 17:21:42 +0000 (17:21 +0000)]
Revert "[Lex] Support more type-traits in __has_feature"

This reverts commit r270580.  Using __has_feature to test for
type-traits is deprecated.

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

8 years ago[Lex] Support more type-traits in __has_feature
David Majnemer [Tue, 24 May 2016 16:53:13 +0000 (16:53 +0000)]
[Lex] Support more type-traits in __has_feature

It looks like we forgot to update the __has_feature support when we
added some of the type traits.

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

8 years ago[MS Volatile] Don't make volatile loads/stores to underaligned objects atomic
David Majnemer [Tue, 24 May 2016 16:09:25 +0000 (16:09 +0000)]
[MS Volatile] Don't make volatile loads/stores to underaligned objects atomic

Underaligned atomic LValues require libcalls which MSVC doesn't have.
MSVC doesn't seem to consider such operations as requiring a barrier
anyway.

This fixes PR27843.

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

8 years ago[modules] Ask the canonical decl whether the constructor was defaulted.
Vassil Vassilev [Tue, 24 May 2016 12:10:36 +0000 (12:10 +0000)]
[modules] Ask the canonical decl whether the constructor was defaulted.

In case of template instantiations query the template instantiation pattern,
which had actually '=default'.

Fixes https://llvm.org/bugs/show_bug.cgi?id=27739

Patch reviewed by Richard Smith.

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

8 years ago[Sparc] Add software float option -msoft-float
Jacob Baungard Hansen [Tue, 24 May 2016 08:30:08 +0000 (08:30 +0000)]
[Sparc] Add software float option -msoft-float

Summary:
Following patch D19265 which enable software floating point support in the Sparc backend, this patch enables the option to be enabled in the front-end using the -msoft-float option.

The user should ensure a library (such as the builtins from Compiler-RT) that includes the software floating point routines is provided.

Reviewers: jyknight, lero_chris

Subscribers: jyknight, cfe-commits

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

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

8 years ago[OPENMP] Fixed codegen for firstprivate vars in standalone worksharing
Alexey Bataev [Tue, 24 May 2016 07:40:12 +0000 (07:40 +0000)]
[OPENMP] Fixed codegen for firstprivate vars in standalone worksharing
directives.

If firstprivate variable is is captured by value in outlined region and then used as firstprivate variable in inner worksharing directive, the copy for this firstprivate variable was not created. Fixed this bug.

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

8 years ago[MSVC2015] dllexport for defaulted special class members
Dmitry Polukhin [Tue, 24 May 2016 06:37:14 +0000 (06:37 +0000)]
[MSVC2015] dllexport for defaulted special class members

Clang doesn't dllexport defaulted special member function defaulted
inside class but does it if they defaulted outside class. MSVC doesn't
make any distinction where they were defaulted. Also MSVC 2013 and 2015
export different set of members. MSVC2015 doesn't emit trivial defaulted
x-tors but does emit copy assign operator.

Differential revision: http://reviews.llvm.org/D20422

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

8 years agoCodeGen: indicate to the backend the exception model
Saleem Abdulrasool [Tue, 24 May 2016 03:21:01 +0000 (03:21 +0000)]
CodeGen: indicate to the backend the exception model

Thread through -fsjlj-exceptions to the backend via the TargetOptions.  This is
in preparation for supporting SjLj exceptions on x86 (e.g. for MinGW).

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

8 years agoVisualize ellipses in TemplateTypeParm and TemplateTypeParmDecl
Mike Spertus [Tue, 24 May 2016 01:47:41 +0000 (01:47 +0000)]
Visualize ellipses in TemplateTypeParm and TemplateTypeParmDecl

Now a TemplateTypeParm will be visualized as typename ...T if it is a pack

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

8 years agoclang-c: de-anonymize structure declaration
Saleem Abdulrasool [Tue, 24 May 2016 01:23:24 +0000 (01:23 +0000)]
clang-c: de-anonymize structure declaration

The statement constructed an anonymous structure which was typedefed.  The
anonymous structure has internal linkage, and that would cause an error when
building with modules.  Give the type declaration a tag name to address the
error when building with modules.

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

8 years agoProperly track the found declaration (possibly a using-declaration) when
Richard Smith [Tue, 24 May 2016 00:01:49 +0000 (00:01 +0000)]
Properly track the found declaration (possibly a using-declaration) when
handling an explicit member specialization.

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

8 years agoVisualizer for Pack template arguments
Mike Spertus [Mon, 23 May 2016 22:27:44 +0000 (22:27 +0000)]
Visualizer for Pack template arguments

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

8 years ago[X86][SSE] Replace lossless i32/f32 to f64 conversion intrinsics with generic IR
Simon Pilgrim [Mon, 23 May 2016 22:13:02 +0000 (22:13 +0000)]
[X86][SSE] Replace lossless i32/f32 to f64 conversion intrinsics with generic IR

Both the (V)CVTDQ2PD(Y) (i32 to f64) and (V)CVTPS2PD(Y) (f32 to f64) conversion instructions are lossless and can be safely represented as generic __builtin_convertvector calls instead of x86 intrinsics without affecting final codegen.

This patch removes the clang builtins and their use in the sse2/avx headers - a future patch will deal with removing the llvm intrinsics, but that will require a bit more work.

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

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

8 years ago[CUDA] Add -fcuda-approx-transcendentals flag.
Justin Lebar [Mon, 23 May 2016 20:19:56 +0000 (20:19 +0000)]
[CUDA] Add -fcuda-approx-transcendentals flag.

Summary:
This lets us emit e.g. sin.approx.f32.  See
http://docs.nvidia.com/cuda/parallel-thread-execution/#floating-point-instructions-sin

Reviewers: rnk

Subscribers: tra, cfe-commits

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

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

8 years agoFix filtering of prior declarations when checking for a tag redeclaration to
Richard Smith [Mon, 23 May 2016 20:03:04 +0000 (20:03 +0000)]
Fix filtering of prior declarations when checking for a tag redeclaration to
map to the redecl context for both decls, not just one of them, and to properly
check that the decl contexts are equivalent.

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

8 years agoAddress post-commit review feedback to r270457
David Majnemer [Mon, 23 May 2016 17:32:35 +0000 (17:32 +0000)]
Address post-commit review feedback to r270457

Add two tests which show our error handling behavior for invalid
parameters in the layout_version and empty_bases attributes.

Amend our documentation to make it more clear that
__declspec(empty_bases) and __declspec(layout_version) can only apply to
classes, structs, and unions.

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

8 years agoClang support for __is_assignable intrinsic
David Majnemer [Mon, 23 May 2016 17:21:55 +0000 (17:21 +0000)]
Clang support for __is_assignable intrinsic

MSVC now supports the __is_assignable type trait intrinsic,
to enable easier and more efficient implementation of the
Standard Library's is_assignable trait.
As of Visual Studio 2015 Update 3, the VC Standard Library
implementation uses the new intrinsic unconditionally.

The implementation is pretty straightforward due to the previously
existing is_nothrow_assignable and is_trivially_assignable.
We handle __is_assignable via the same code as the other two except
that we skip the extra checks for nothrow or triviality.

Patch by Dave Bartolomeo!

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

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

8 years ago[MS ABI] Implement __declspec(empty_bases) and __declspec(layout_version)
David Majnemer [Mon, 23 May 2016 17:16:12 +0000 (17:16 +0000)]
[MS ABI] Implement __declspec(empty_bases) and __declspec(layout_version)

The layout_version attribute is pretty straightforward: use the layout
rules from version XYZ of MSVC when used like
struct __declspec(layout_version(XYZ)) S {};

The empty_bases attribute is more interesting.  It tries to get the C++
empty base optimization to fire more often by tweaking the MSVC ABI
rules in subtle ways:
1. Disable the leading and trailing zero-sized object flags if a class
   is marked __declspec(empty_bases) and is empty.

   This means that given:
   struct __declspec(empty_bases) A {};
   struct __declspec(empty_bases) B {};
   struct C : A, B {};

   'C' will have size 1 and nvsize 0 despite not being annotated
   __declspec(empty_bases).

2. When laying out virtual or non-virtual bases, disable the injection
   of padding between classes if the most derived class is marked
   __declspec(empty_bases).

   This means that given:
   struct A {};
   struct B {};
   struct __declspec(empty_bases) C : A, B {};

   'C' will have size 1 and nvsize 0.

3. When calculating the offset of a non-virtual base, choose offset zero
   if the most derived class is marked __declspec(empty_bases) and the
   base is empty _and_ has an nvsize of 0.

   Because of the ABI rules, this does not mean that empty bases
   reliably get placed at offset 0!

   For example:
   struct A {};
   struct B {};
   struct __declspec(empty_bases) C : A, B { virtual ~C(); };

   'C' will be pointer sized to account for the vfptr at offset 0.
   'A' and 'B' will _not_ be at offset 0 despite being empty!
   Instead, they will be located right after the vfptr.

   This occurs due to the interaction betweeen non-virtual base layout
   and virtual function pointer injection: injection occurs after the
   nv-bases and shifts them down by the size of a pointer.

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

8 years ago[clang][AVX512][Builtin] adding missing intrinsics for vpmultishiftqb{128|256|512...
Michael Zuckerman [Mon, 23 May 2016 15:04:39 +0000 (15:04 +0000)]
[clang][AVX512][Builtin] adding missing intrinsics for vpmultishiftqb{128|256|512} instruction set .

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

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

8 years agoTest commit
Jacob Baungard Hansen [Mon, 23 May 2016 13:12:29 +0000 (13:12 +0000)]
Test commit

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

8 years ago[Clang][AVX512][BUILTIN]adding missing intrinsics for movdaq instruction set
Michael Zuckerman [Mon, 23 May 2016 08:01:48 +0000 (08:01 +0000)]
[Clang][AVX512][BUILTIN]adding missing intrinsics for movdaq instruction set

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

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

8 years agoDriver: support exherbo's multiarch support
Saleem Abdulrasool [Mon, 23 May 2016 02:17:28 +0000 (02:17 +0000)]
Driver: support exherbo's multiarch support

Exherbo has an alternative file system layout to accommodate multiarch.  The
loader is located at /usr/${triple}/lib/${loader}.  Adjust the Linux toolchain
to support that on exherbo.

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

8 years agoFix typo in documentation comment.
Bob Wilson [Mon, 23 May 2016 01:52:50 +0000 (01:52 +0000)]
Fix typo in documentation comment.

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

8 years ago[driver][mips] Follow-up to r270373. Add missed folder.
Simon Atanasyan [Sun, 22 May 2016 22:06:19 +0000 (22:06 +0000)]
[driver][mips] Follow-up to r270373. Add missed folder.

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

8 years ago[driver][mips] clang-format the code. NFC
Simon Atanasyan [Sun, 22 May 2016 18:18:41 +0000 (18:18 +0000)]
[driver][mips] clang-format the code. NFC

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

8 years ago[driver][mips] Support new versions of MIPS CodeScape toolchains
Simon Atanasyan [Sun, 22 May 2016 18:18:07 +0000 (18:18 +0000)]
[driver][mips] Support new versions of MIPS CodeScape toolchains

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

8 years ago[driver][mips] Use target triple mips-mti-linux-gnu for toolchain detection
Simon Atanasyan [Sun, 22 May 2016 15:28:34 +0000 (15:28 +0000)]
[driver][mips] Use target triple mips-mti-linux-gnu for toolchain detection

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

8 years ago[driver][mips] Rename some variables to better reflect their purpose. NFC
Simon Atanasyan [Sun, 22 May 2016 15:27:58 +0000 (15:27 +0000)]
[driver][mips] Rename some variables to better reflect their purpose. NFC

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

8 years ago[driver][mips] Drop support for outdated version of CodeSourcery MIPS toolchain
Simon Atanasyan [Sun, 22 May 2016 15:27:36 +0000 (15:27 +0000)]
[driver][mips] Drop support for outdated version of CodeSourcery MIPS toolchain

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

8 years ago[AST] Cleanup comments regarding CXXRecordDecl::isEmpty
David Majnemer [Sun, 22 May 2016 05:34:26 +0000 (05:34 +0000)]
[AST] Cleanup comments regarding CXXRecordDecl::isEmpty

We were missing references to the standard, some of our home-grown
verbiage didn't make any sense.

No functional change is intended.

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

8 years agoDriver: sink getLinuxDynamicLoader into the Toolchain
Saleem Abdulrasool [Sun, 22 May 2016 03:12:19 +0000 (03:12 +0000)]
Driver: sink getLinuxDynamicLoader into the Toolchain

The parameter already requires the toolchain, sink the method into the class.
This also enables the use of the distro detection logic which will be needed to
support Exherbo's multiarch approach.

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

8 years agoDriver: simplify getDynameLinker
Saleem Abdulrasool [Sun, 22 May 2016 01:37:36 +0000 (01:37 +0000)]
Driver: simplify getDynameLinker

Convert the cascading if/else to a switch.  This makes it easier to follow the
logic.  Minor difference is that we no longer default to x86_64 but rather to
the architecture specified by the architecture.

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

8 years ago[X86][AVX] Ensure zero-extension of _mm256_extract_epi8 and _mm256_extract_epi16
Simon Pilgrim [Sat, 21 May 2016 21:14:35 +0000 (21:14 +0000)]
[X86][AVX] Ensure zero-extension of _mm256_extract_epi8 and _mm256_extract_epi16

Ensure _mm256_extract_epi8 and _mm256_extract_epi16 zero extend their i8/i16 result to i32. This matches _mm_extract_epi8 and _mm_extract_epi16.

Fix for PR27594

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

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

8 years agoUpdate -ffast-math documentation to match reality.
Justin Lebar [Fri, 20 May 2016 21:33:01 +0000 (21:33 +0000)]
Update -ffast-math documentation to match reality.

Reviewers: rsmith

Subscribers: cfe-commits

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

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

8 years ago[OpenCL] Add to_{global|local|private} builtin functions.
Yaxun Liu [Fri, 20 May 2016 19:54:38 +0000 (19:54 +0000)]
[OpenCL] Add to_{global|local|private} builtin functions.

OpenCL builtin functions to_{global|local|private} accepts argument of pointer type to arbitrary pointee type, and return a pointer to the same pointee type in different addr space, i.e.

global gentype *to_global(gentype *p);
It is not desirable to declare it as

global void *to_global(void *);
in opencl header file since it misses diagnostics.

This patch implements these builtin functions as Clang builtin functions. In the builtin def file they are defined to have signature void*(void*). When handling call expressions, their declarations are re-written to have correct parameter type and return type corresponding to the call argument.

In codegen call to addr void *to_addr(void*) is generated with addrcasts or bitcasts to facilitate implementation in builtin library.

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

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

8 years agoObjectiveC: canonicalize "kindof id" to "id".
Manman Ren [Fri, 20 May 2016 17:29:43 +0000 (17:29 +0000)]
ObjectiveC: canonicalize "kindof id" to "id".

There is no need to apply kindof on an unqualified id type.

rdar://24753825

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

8 years agoMake __FreeBSD_cc_version predefined macro configurable at build time
Dimitry Andric [Fri, 20 May 2016 17:27:22 +0000 (17:27 +0000)]
Make __FreeBSD_cc_version predefined macro configurable at build time

The `FreeBSDTargetInfo` class has always set the `__FreeBSD_cc_version`
predefined macro to a rather static value, calculated from the major OS
version.

In the FreeBSD base system, we will start incrementing the value of this
macro whenever we make any signifant change to clang, so we need a way
to configure the macro's value at build time.

Use `FREEBSD_CC_VERSION` for this, which we can define in the FreeBSD
build system using either the `-D` command line option, or an include
file.  Stock builds will keep the earlier value.

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

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

8 years ago[OpenCL] Allow explicit cast of 0 to event_t.
Yaxun Liu [Fri, 20 May 2016 17:18:16 +0000 (17:18 +0000)]
[OpenCL] Allow explicit cast of 0 to event_t.

Patch by Aaron Enye Shi.

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

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

8 years ago[X86][AVX] Added _mm256_testc_si256/_mm256_testnzc_si256/_mm256_testz_si256 tests
Simon Pilgrim [Fri, 20 May 2016 15:49:17 +0000 (15:49 +0000)]
[X86][AVX] Added _mm256_testc_si256/_mm256_testnzc_si256/_mm256_testz_si256 tests

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

8 years agoEliminate unnecessary file access checks in Clang driver on Windows
Adrian McCarthy [Fri, 20 May 2016 15:46:23 +0000 (15:46 +0000)]
Eliminate unnecessary file access checks in Clang driver on Windows

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

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

8 years agoAdd all the avx512 flavors to __builtin_cpu_supports's list.
Benjamin Kramer [Fri, 20 May 2016 15:21:08 +0000 (15:21 +0000)]
Add all the avx512 flavors to __builtin_cpu_supports's list.

This is matching what trunk gcc is accepting. Also adds a missing ssse3
case. PR27779. The amount of duplication here is annoying, maybe it
should be factored into a separate .def file?

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

8 years ago[Hexagon] Recognize "s" constraint in inline-asm
Krzysztof Parzyszek [Fri, 20 May 2016 13:50:32 +0000 (13:50 +0000)]
[Hexagon] Recognize "s" constraint in inline-asm

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

8 years ago[X86][AVX] Added _mm256_extract_epi64 test
Simon Pilgrim [Fri, 20 May 2016 12:57:21 +0000 (12:57 +0000)]
[X86][AVX] Added _mm256_extract_epi64 test

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

8 years ago[X86][AVX] Full set of AVX intrinsics tests
Simon Pilgrim [Fri, 20 May 2016 12:41:02 +0000 (12:41 +0000)]
[X86][AVX] Full set of AVX intrinsics tests

llvm/test/CodeGen/X86/avx-intrinsics-fast-isel.ll will be synced to this

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

8 years agoclang-format: [JS] sort ES6 imports.
Martin Probst [Fri, 20 May 2016 11:24:24 +0000 (11:24 +0000)]
clang-format: [JS] sort ES6 imports.

Summary:
This change automatically sorts ES6 imports and exports into four groups:
absolute imports, parent imports, relative imports, and then exports. Exports
are sorted in the same order, but not grouped further.

To keep JS import sorting out of Format.cpp, this required extracting the
TokenAnalyzer infrastructure to separate header and implementation files.

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

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

8 years agoclang-format: [JS] Treat "for" as a reserved word after a ".".
Daniel Jasper [Fri, 20 May 2016 06:16:01 +0000 (06:16 +0000)]
clang-format: [JS] Treat "for" as a reserved word after a ".".

Otherwise, clang-format can get confused with statements like:

  x.for = 1;

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

8 years agoCodeGen: address -Wcast-qual warning
Saleem Abdulrasool [Fri, 20 May 2016 03:58:12 +0000 (03:58 +0000)]
CodeGen: address -Wcast-qual warning

Add a const_cast rather than the C-style cast.  NFC.

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

8 years agoRe-alphabetize this file list.
Richard Smith [Fri, 20 May 2016 01:07:10 +0000 (01:07 +0000)]
Re-alphabetize this file list.

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

8 years agoRevert incorrect module map changes in r269907 and replace them with the
Richard Smith [Fri, 20 May 2016 01:06:47 +0000 (01:06 +0000)]
Revert incorrect module map changes in r269907 and replace them with the
appropriate changes.

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

8 years agoAvoid depending on test inputes that aren't in Inputs
Reid Kleckner [Fri, 20 May 2016 00:38:25 +0000 (00:38 +0000)]
Avoid depending on test inputes that aren't in Inputs

Some people have weird CI systems that run each test subdirectory
independently without access to other parallel trees.

Unfortunately, this means we have to suffer some duplication until Art
can sort out how to share these types.

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

8 years ago[Lexer] Don't merge macro args from different macro files
Vedant Kumar [Thu, 19 May 2016 23:44:02 +0000 (23:44 +0000)]
[Lexer] Don't merge macro args from different macro files

The lexer sets the end location of macro arguments incorrectly *if*,
while merging consecutive args to fit into a single SLocEntry, it finds
args which come from different macro files.

Fix the issue by using separate SLocEntries in this situation.

This fixes a code coverage crasher (rdar://problem/26181005). Because
the lexer reported end locations for certain macro args incorrectly, we
would generate bogus coverage mappings with negative line offsets.

Reviewed-by: akyrtzi
Differential Revision: http://reviews.llvm.org/D20401

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

8 years ago[analyzer] Fix for PR23790 : constrain return value of strcmp() rather than returning...
Anton Yartsev [Thu, 19 May 2016 23:03:49 +0000 (23:03 +0000)]
[analyzer] Fix for PR23790 : constrain return value of strcmp() rather than returning a concrete value.

The function strcmp() can return any value, not just {-1,0,1} : "The strcmp(const char *s1, const char *s2) function returns an integer greater than, equal to, or less than zero, accordingly as the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2." [C11 7.24.4.2p3]
https://llvm.org/bugs/show_bug.cgi?id=23790
http://reviews.llvm.org/D16317

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

8 years ago[CUDA] Implement __ldg using intrinsics.
Justin Lebar [Thu, 19 May 2016 22:49:13 +0000 (22:49 +0000)]
[CUDA] Implement __ldg using intrinsics.

Summary:
Previously it was implemented as inline asm in the CUDA headers.

This change allows us to use the [addr+imm] addressing mode when
executing ld.global.nc instructions.  This translates into a 1.3x
speedup on some benchmarks that call this instruction from within an
unrolled loop.

Reviewers: tra, rsmith

Subscribers: jhen, cfe-commits, jholewinski

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

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

8 years ago[Sema] Fix use after move. Found by ubsan.
Benjamin Kramer [Thu, 19 May 2016 21:53:33 +0000 (21:53 +0000)]
[Sema] Fix use after move. Found by ubsan.

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

8 years ago[CUDA] Do not allow non-empty destructors for global device-side variables.
Artem Belevich [Thu, 19 May 2016 20:13:53 +0000 (20:13 +0000)]
[CUDA] Do not allow non-empty destructors for global device-side variables.

According to Cuda Programming guide (v7.5, E2.3.1):
> __device__, __constant__ and __shared__ variables defined in namespace
> scope, that are of class type, cannot have a non-empty constructor or a
> non-empty destructor.

Clang already deals with device-side constructors (see D15305).
This patch enforces similar rules for destructors.

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

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

8 years ago[CUDA] Split device-var-init.cu tests into separate Sema and CodeGen parts.
Artem Belevich [Thu, 19 May 2016 20:13:39 +0000 (20:13 +0000)]
[CUDA] Split device-var-init.cu tests into separate Sema and CodeGen parts.

Codegen tests for device-side variable initialization are subset of test
cases used to verify Sema's part of the job.
Including CodeGenCUDA/device-var-init.cu from SemaCUDA makes it easier to
keep both sides in sync.

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

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

8 years ago[CUDA] Enable fusing FP ops (-ffp-contract=fast) for CUDA by default.
Artem Belevich [Thu, 19 May 2016 18:44:45 +0000 (18:44 +0000)]
[CUDA] Enable fusing FP ops (-ffp-contract=fast) for CUDA by default.

This matches default nvcc behavior and gives substantial
performance boost on GPU where fmad is much cheaper compared to add+mul.

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

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

8 years ago[MS ABI] Ignore transparent contexts when determining the effective context
David Majnemer [Thu, 19 May 2016 18:15:53 +0000 (18:15 +0000)]
[MS ABI] Ignore transparent contexts when determining the effective context

We didn't skip over extern "C++" contexts, causing us to mangle things
which don't need to be mangled.

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

8 years agoCheck for nullptr argument.
Artem Belevich [Thu, 19 May 2016 18:00:18 +0000 (18:00 +0000)]
Check for nullptr argument.

Addresses static analysis report in PR15492.

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

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