Richard Smith [Fri, 30 May 2014 22:16:51 +0000 (22:16 +0000)]
Take PrintingPolicy::SuppressUnwrittenScope into account when printing the
qualified name of a NamedDecl. Patch by Volodymyr Sapsai!
llvm-svn: 209924
Filipe Cabecinhas [Fri, 30 May 2014 21:31:21 +0000 (21:31 +0000)]
Separate the check for blend shuffle_vector masks
Summary:
Separate the check for blend shuffle_vector masks into isBlendMask.
This function will also be used to check if a vector shuffle is legal. No
change in functionality was intended, but we ended up improving codegen on
two tests, which were being (more) optimized only if the resulting shuffle
was legal.
Reviewers: nadav, delena, andreadb
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D3964
llvm-svn: 209923
Ben Langmuir [Fri, 30 May 2014 21:20:54 +0000 (21:20 +0000)]
Invalidate the file system cache entries for files that may rebuild
This reapplies r209910 with a fix for the assertion failures hit on the
buildbots.
original commit message:
I thought we could get away without this, but it means that the
FileEntry objects actually refer to the wrong files, since pcms are not
updated inplace, they are atomically renamed into place after compiling
a module.
So we are close to the original behaviour of invalidating the cache for
all modules being removed, but now we should only invalidate the ones
that depend on whichever module failed to load.
Unfortunately I haven't come up with a new test that didn't require
a race between parallel invocations of clang.
<rdar://problem/
17038180>
llvm-svn: 209922
Sanjay Patel [Fri, 30 May 2014 21:18:13 +0000 (21:18 +0000)]
fixed more typos
llvm-svn: 209921
Adrian Prantl [Fri, 30 May 2014 21:10:13 +0000 (21:10 +0000)]
Roll DbgVariable::setMInsn into the constructor. No functional changes.
llvm-svn: 209920
Alp Toker [Fri, 30 May 2014 21:07:40 +0000 (21:07 +0000)]
Remove unused struct from test
This presumably got inadvertently copied from dllimport-members.cpp.
llvm-svn: 209919
Sanjay Patel [Fri, 30 May 2014 21:07:25 +0000 (21:07 +0000)]
added link to CMake page
llvm-svn: 209918
Greg Clayton [Fri, 30 May 2014 21:06:57 +0000 (21:06 +0000)]
Don't use libc's "char *basename(char *)" or "char *dirname(char *)" as they are not thread safe.
I switched the lldb_private::FileSpec code over to use "llvm::StringRef llvm::sys::path::filename(llvm::StringRef)" for basename() and "llvm::StringRef llvm::sys::path::parent_path(llvm::StringRef)" for dirname().
<rdar://problem/
16870083>
llvm-svn: 209917
Sanjay Patel [Fri, 30 May 2014 20:55:55 +0000 (20:55 +0000)]
fixed typo
llvm-svn: 209916
Richard Smith [Fri, 30 May 2014 19:44:17 +0000 (19:44 +0000)]
Add a FIXME for a bug Doug pointed out in code review.
llvm-svn: 209915
Matt Arsenault [Fri, 30 May 2014 18:34:43 +0000 (18:34 +0000)]
Make bitcast, extractelement, and insertelement considered cheap for speculation.
This helps more branches into selects. On R600,
vectors are cheap and anything that helps
remove branches is very good.
llvm-svn: 209914
DeLesley Hutchins [Fri, 30 May 2014 18:20:04 +0000 (18:20 +0000)]
Thread Safety Analysis: fix handling of string and char literals.
llvm-svn: 209913
Todd Fiala [Fri, 30 May 2014 17:59:47 +0000 (17:59 +0000)]
gdb-remote signal delivery test cleanup.
Learned that MacOSX only accepts signal delivery on a thread that is
already signal handling. Reworked the test exe to cause a SIGSEGV
and recover if either nothing intercepts the SIGSEGV handler, or
if a SIGUSR1 is inserted. The test uses the latter part to test
signal delivery on continue using the SIGUSR1.
I still don't have this working on MacOSX. I'm seeing the
signal get delivered to a different thread than the one I'm
specifying with $Hc{thread-id} + $C{signo}, or with
$vCont;C{signo}:{thread-id};c. I'll come back to this
after getting it working on the llgs branch on Linux x86_64.
llvm-svn: 209912
Ben Langmuir [Fri, 30 May 2014 17:54:59 +0000 (17:54 +0000)]
Revert "Invalidate the file system cache entries for files that may rebuild"
This reverts commit r209910, which is breaking some of the bots.
llvm-svn: 209911
Ben Langmuir [Fri, 30 May 2014 17:42:15 +0000 (17:42 +0000)]
Invalidate the file system cache entries for files that may rebuild
I thought we could get away without this, but it means that the
FileEntry objects actually refer to the wrong files, since pcms are not
updated inplace, they are atomically renamed into place after compiling
a module.
So we are close to the original behaviour of invalidating the cache for
all modules being removed, but now we should only invalidate the ones
that depend on whichever module failed to load.
Unfortunately I haven't come up with a new test that didn't require
a race between parallel invocations of clang.
<rdar://problem/
17038180>
llvm-svn: 209910
Nico Weber [Fri, 30 May 2014 17:27:21 +0000 (17:27 +0000)]
Let libc++abi compile with gcc.
There was a single problem in cxa_demangle.cpp, where gcc would complain
`error: changes meaning of 'String'` about the line `typedef String String;`.
According to 3.3.7p2, this diagnostic is allowed (but not required, so clang
does not have to report this).
As a fix, make string_pair a template and pass String as template parameter.
This fixes the error with gcc and also removes some repetition from the code.
No behavior change.
llvm-svn: 209909
Hans Wennborg [Fri, 30 May 2014 16:59:42 +0000 (16:59 +0000)]
Start adding support for dllimport/dllexport on classes (PR11170)
This implements the central part of support for dllimport/dllexport on
classes: allowing the attribute on class declarations, inheriting it
to class members, and forcing emission of exported members. It's based
on Nico Rieck's patch from http://reviews.llvm.org/D1099.
This patch doesn't propagate dllexport to bases that are template
specializations, which is an interesting problem. It also doesn't
look at the rules when redeclaring classes with different attributes,
I'd like to do that separately.
Differential Revision: http://reviews.llvm.org/D3877
llvm-svn: 209908
Logan Chien [Fri, 30 May 2014 16:48:56 +0000 (16:48 +0000)]
Fix MIPS exception personality encoding.
For MIPS, we have to encode the personality routine with
an indirect pointer to absptr; otherwise, some link warning
warning will be raised, and the program might crash in some
early MIPS Android device.
llvm-svn: 209907
Fariborz Jahanian [Fri, 30 May 2014 16:35:53 +0000 (16:35 +0000)]
Objective-C. Diagnose assigning a block pointer type to
an Objective-C object type other than 'id'.
// rdar://
16739120
llvm-svn: 209906
Tim Northover [Fri, 30 May 2014 16:01:29 +0000 (16:01 +0000)]
MachO: move test to ARM directory.
This test specifies an ARM triple, so it needs ARM as a registered
target.
llvm-svn: 209905
DeLesley Hutchins [Fri, 30 May 2014 15:55:25 +0000 (15:55 +0000)]
Thread Safety Analysis: fix uninitialized member in TIL Literal.
llvm-svn: 209904
Rafael Espindola [Fri, 30 May 2014 15:54:32 +0000 (15:54 +0000)]
PR19753: Optimize comparisons with "ashr exact" of a constanst.
Patch by suyog sarda.
llvm-svn: 209903
Rafael Espindola [Fri, 30 May 2014 15:00:45 +0000 (15:00 +0000)]
[pr19636] Fix known bit computation in urem instruction with power of two.
Patch by Andrey Kuharev.
llvm-svn: 209902
Tim Northover [Fri, 30 May 2014 14:41:51 +0000 (14:41 +0000)]
SelectionDAG: skip barriers for unordered atomic operations
Unordered is strictly weaker than monotonic, so if the latter doesn't have any
barriers then the former certainly shouldn't.
rdar://problem/
16548260
llvm-svn: 209901
Dmitry Vyukov [Fri, 30 May 2014 14:27:31 +0000 (14:27 +0000)]
tsan: add a test from data-race-test suite:
https://code.google.com/p/data-race-test/source/browse/trunk/unittest/racecheck_unittest.cc
llvm-svn: 209900
Tim Northover [Fri, 30 May 2014 14:14:07 +0000 (14:14 +0000)]
AArch64: combine arm64 & aarch64 cases in switch
There shouldn't be any difference in behaviour here, at least not in
any configurations people care about and possibly not in any reachable
configurations.
llvm-svn: 209899
Dmitry Vyukov [Fri, 30 May 2014 14:08:51 +0000 (14:08 +0000)]
tsan: make positive tests more robust
Add a script that is used to deflake inherently flaky tsan tests.
It is invoked from lit tests as:
%deflake %run %t
The script runs the target program up to 10 times,
until it produces a tsan warning.
llvm-svn: 209898
Dmitry Vyukov [Fri, 30 May 2014 13:36:29 +0000 (13:36 +0000)]
tsan: optimize memory access functions
The optimization is two-fold:
First, the algorithm now uses SSE instructions to
handle all 4 shadow slots at once. This makes processing
faster.
Second, if shadow contains the same access, we do not
store the event into trace. This increases effective
trace size, that is, tsan can remember up to 10x more
previous memory accesses.
Perofrmance impact:
Before:
[ OK ] DISABLED_BENCH.Mop8Read (2461 ms)
[ OK ] DISABLED_BENCH.Mop8Write (1836 ms)
After:
[ OK ] DISABLED_BENCH.Mop8Read (1204 ms)
[ OK ] DISABLED_BENCH.Mop8Write (976 ms)
But this measures only fast-path.
On large real applications the speedup is ~20%.
Trace size impact:
On app1:
Memory accesses :
1163265870
Including same :
791312905 (68%)
on app2:
Memory accesses :
166875345
Including same :
150449689 (90%)
90% of filtered events means that trace size is effectively 10x larger.
llvm-svn: 209897
Daniel Jasper [Fri, 30 May 2014 13:31:14 +0000 (13:31 +0000)]
Revert "Remove redundant check discovered in post-commit review of r209505."
This breaks with MSVC.
With IsLateTemplateParsed, FunctionDecl::doesThisDeclarationHaveABody() returns true regardless of Body.
This reinstates what was fixed in r208985.
llvm-svn: 209896
Tim Northover [Fri, 30 May 2014 13:23:06 +0000 (13:23 +0000)]
ARM: use AAPCS-style prologues for embedded MachO.
Darwin prologues save their GPRs in two stages: a narrow push of r0-r7 & lr,
followed by a wide push of the remaining registers if there are any. AAPCS uses
a single push.w instruction.
It turns out that, on average, enough registers get pushed that code is smaller
in the AAPCS prologue, which is a nice property for M-class programmers. They
also have other options available for back-traces, so can hopefully deal with
the fact that FP & LR aren't adjacent in memory.
rdar://problem/
15909583
llvm-svn: 209895
Tim Northover [Fri, 30 May 2014 13:22:59 +0000 (13:22 +0000)]
MachO: support N_INDR aliases in assembly files.
This makes LLVM create N_INDR aliases (to be resolved by the linker) when
appropriate.
rdar://problem/
15125513
llvm-svn: 209894
Diego Novillo [Fri, 30 May 2014 13:19:28 +0000 (13:19 +0000)]
Remove unnecessary test.
llvm-svn: 209893
Aaron Ballman [Fri, 30 May 2014 13:17:17 +0000 (13:17 +0000)]
This test is no longer relevant. It is covered already by [basic.scope.pdecl]p10, and our current test for that is more thorough (though our test is named p9.cpp).
llvm-svn: 209892
Aaron Ballman [Fri, 30 May 2014 13:09:38 +0000 (13:09 +0000)]
This test should no longer be XFAILed; the standard has stabilized, and the test contents are acceptable. No diagnostics expected from this test.
llvm-svn: 209891
Aaron Ballman [Fri, 30 May 2014 12:57:13 +0000 (12:57 +0000)]
Setting a heading for the section/allocate attribute so that the attribute documentation can be properly generated.
llvm-svn: 209890
Timur Iskhodzhanov [Fri, 30 May 2014 12:42:57 +0000 (12:42 +0000)]
[Sanitizers Win] Move duplicate Windows-specific compiler flags to a common CMake variable
Reviewed at http://reviews.llvm.org/D3952
llvm-svn: 209889
Nico Weber [Fri, 30 May 2014 12:09:47 +0000 (12:09 +0000)]
Add a _LIBCPP_CONSTEXPR that was missed in r170026.
(clang doesn't complain about this, but gcc does. This is necessary for a
follow-up patch that will enable _LIBCPP_CONSTEXPR for gcc.)
llvm-svn: 209888
Timur Iskhodzhanov [Fri, 30 May 2014 11:58:32 +0000 (11:58 +0000)]
[ASan Win] Fix a couple of warnings in tests and enable -WX
llvm-svn: 209887
Joerg Sonnenberger [Fri, 30 May 2014 11:08:18 +0000 (11:08 +0000)]
Implement __divtf3 for IEEE quad precision.
Patch by: GuanHong Liu
Differential Revision: http://reviews.llvm.org/D2800
llvm-svn: 209886
Tim Northover [Fri, 30 May 2014 10:56:12 +0000 (10:56 +0000)]
AArch64 & ARM: disable generic test that relies on no CFG changes.
llvm-svn: 209885
Evgeniy Stepanov [Fri, 30 May 2014 10:50:17 +0000 (10:50 +0000)]
[sanitizer] Fix build on ARM.
llvm-svn: 209884
Tim Northover [Fri, 30 May 2014 10:09:59 +0000 (10:09 +0000)]
ARM & AArch64: make use of common cmpxchg idioms after expansion
The C and C++ semantics for compare_exchange require it to return a bool
indicating success. This gets mapped to LLVM IR which follows each cmpxchg with
an icmp of the value loaded against the desired value.
When lowered to ldxr/stxr loops, this extra comparison is redundant: its
results are implicit in the control-flow of the function.
This commit makes two changes: it replaces that icmp with appropriate PHI
nodes, and then makes sure earlyCSE is called after expansion to actually make
use of the opportunities revealed.
I've also added -{arm,aarch64}-enable-atomic-tidy options, so that
existing fragile tests aren't perturbed too much by the change. Many
of them either rely on undef/unreachable too pervasively to be
restored to something well-defined (particularly while making sure
they test the same obscure assert from many years ago), or depend on a
particular CFG shape, which is disrupted by SimplifyCFG.
rdar://problem/
16227836
llvm-svn: 209883
Daniel Jasper [Fri, 30 May 2014 09:21:17 +0000 (09:21 +0000)]
Remove redundant check discovered in post-commit review of r209505.
llvm-svn: 209882
Timur Iskhodzhanov [Fri, 30 May 2014 09:01:17 +0000 (09:01 +0000)]
[ASan Win] DLL thunk: make each INTERFACE_FUNCTION unique to prevent ICF linker optimizations
llvm-svn: 209881
Tim Northover [Fri, 30 May 2014 08:59:55 +0000 (08:59 +0000)]
AArch64 & ARM: remove undefined behaviour from some tests.
llvm-svn: 209880
Evgeniy Stepanov [Fri, 30 May 2014 08:52:03 +0000 (08:52 +0000)]
[asan] Enable ASan on PowerPC.
Patch by Peter Bergner.
llvm-svn: 209879
NAKAMURA Takumi [Fri, 30 May 2014 07:03:16 +0000 (07:03 +0000)]
clang/test/Frontend/Weverything-and-remarks.cpp: Add explicit -target.
You could see unexpected result (*.tmp.err) with "-target x86_64-win32".
Weverything-and-remarks.cpp:11:9: warning: 'char32_t' type specifier is incompatible with C++98 [-Wc++98-compat]
typedef __char32_t char32_t;
^
Weverything-and-remarks.cpp:12:27: error: typedef redefinition with different types ('unsigned long' vs 'unsigned long long')
typedef long unsigned int size_t;
^
Weverything-and-remarks.cpp:19:62: warning: dynamic exception specifications are deprecated [-Wdeprecated]
static void assign(char_type& __c1, const char_type& __c2) throw() {
^~~~~~~
Weverything-and-remarks.cpp:19:62: note: use 'noexcept' instead
static void assign(char_type& __c1, const char_type& __c2) throw() {
^~~~~~~
noexcept
Weverything-and-remarks.cpp:25:46: warning: unused parameter '__n' [-Wunused-parameter]
size_t __n) {
^
3 warnings and 1 error generated.
llvm-svn: 209878
Hao Liu [Fri, 30 May 2014 05:58:19 +0000 (05:58 +0000)]
Test cases named with dates is a legacy rule not used now. Rename several test cases.
llvm-svn: 209877
Alexey Bataev [Fri, 30 May 2014 05:48:40 +0000 (05:48 +0000)]
[OPENMP] Improve debug location codegen for OpenMP runtime library.
llvm-svn: 209876
Simon Atanasyan [Fri, 30 May 2014 05:29:46 +0000 (05:29 +0000)]
[ELF] Fix incorrect sorting of .init_array / .fini_array sections.
The main problem is in the predicate passed to the `std::stable_sort()`.
This predicate always returns false if **both** section's names do not
start with `.init_array` or `.fini_array` prefixes. In short, it does not
define a strict weak orderng. Suppose we have the following sections:
.A .init_array.1 .init_array.2
The predicate states that:
not .init_array.1 < .A
not .A < .init_array.2
but .init_array.1 < .init_array.2 !!!
The second problem is that `.init_array` section without number should
go last in the list. Not it has the lowest priority '0' and goes first.
The patch fixes both of the problems.
llvm-svn: 209875
Faisal Vali [Fri, 30 May 2014 04:39:37 +0000 (04:39 +0000)]
Fix 'this' capturing Generic lambdas used within default initializers (PR19876)
http://llvm.org/bugs/show_bug.cgi?id=19876
The following C++1y code results in a crash:
struct X {
int m = 10;
int n = [this](auto) { return m; }(20);
};
When implicitly instantiating the generic lambda's call operator specialization body, Sema is unable to determine the current 'this' type when transforming the MemberExpr 'm' - since it looks for the nearest enclosing FunctionDeclDC - which is obviously null.
I considered two ways to fix this:
1) In InstantiateFunctionDefinition, when the context is saved after the lambda scope info is created, retain the 'this' pointer.
2) Teach getCurrentThisType() to recognize it is within a generic lambda within an NSDMI/default-initializer and return the appropriate this type.
I chose to implement #2 (though I confess I do not have a compelling reason for choosing it over #1).
Richard Smith accepted the patch:
http://reviews.llvm.org/D3935
Thank you!
llvm-svn: 209874
Karthik Bhat [Fri, 30 May 2014 04:31:24 +0000 (04:31 +0000)]
Allow vectorization of intrinsics such as powi,cttz and ctlz in Loop and SLP Vectorizer.
This patch adds support to vectorize intrinsics such as powi, cttz and ctlz in Vectorizer. These intrinsics are different from other
intrinsics as second argument to these function must be same in order to vectorize them and it should be represented as a scalar.
Review: http://reviews.llvm.org/D3851#inline-32769 and http://reviews.llvm.org/D3937#inline-32857
llvm-svn: 209873
Chandler Carruth [Fri, 30 May 2014 03:50:06 +0000 (03:50 +0000)]
Add a trivial ArrayRef helper overload to the SelectionDAG interface.
I'm using this pretty frequently in a patch I'm working on and it seems
generally useful.
llvm-svn: 209872
Richard Trieu [Fri, 30 May 2014 03:15:17 +0000 (03:15 +0000)]
Remove use of comma operator.
llvm-svn: 209871
Nick Lewycky [Fri, 30 May 2014 02:31:27 +0000 (02:31 +0000)]
When analyzing params/args for readnone/readonly, don't forget to consider that a pointer argument may be passed through a callsite to the return, and that we may need to analyze it. Fixes a bug reported on llvm-dev: lists.cs.uiuc.edu/pipermail/llvmdev/2014-May/073098.html
llvm-svn: 209870
Nikola Smiljanic [Fri, 30 May 2014 01:28:28 +0000 (01:28 +0000)]
PR11410 - Confusing diagnostic when trailing array element tries to call deleted default constructor
llvm-svn: 209869
Nick Kledzik [Fri, 30 May 2014 01:13:49 +0000 (01:13 +0000)]
[mach-o] Wire up mach-o binary reader to reader registry
llvm-svn: 209868
Nikola Smiljanic [Fri, 30 May 2014 00:15:04 +0000 (00:15 +0000)]
PR12214 - Warn on suspicious self-compound-assignments.
llvm-svn: 209867
Adam Nemet [Thu, 29 May 2014 23:52:53 +0000 (23:52 +0000)]
[X86] Move test from r209863 to CodeGen/X86
We should only run this if X86 is in the targets.
llvm-svn: 209866
Nick Kledzik [Thu, 29 May 2014 23:50:48 +0000 (23:50 +0000)]
[mach-0] Add support for parsing compact unwind info section
llvm-svn: 209865
Adam Nemet [Thu, 29 May 2014 23:35:36 +0000 (23:35 +0000)]
[X86] Remove AVX1 vbroadcast intrinsics
The corresponding CFE patch replaces these intrinsics with vector initializers
in avxintrin.h. This patch removes the LLVM intrinsics from the backend.
We now stop lowering at X86ISD::VBROADCAST custom node rather than lowering
that further to the intrinsics.
The patch only changes VBROADCASTS* and leaves VBROADCAST[FI]128 to continue
to use intrinsics. As explained in the CFE patch, the reason is that we
currently don't generate as good code for them without the intrinsics.
CodeGen/X86/avx-vbroadcast.ll already provides coverage for this change. It
checks that for a series of insertelements we generate the appropriate
vbroadcast instruction.
Also verified that there was no assembly change in the test-suite before and
after this patch.
llvm-svn: 209864
Adam Nemet [Thu, 29 May 2014 23:35:33 +0000 (23:35 +0000)]
[X86] Auto-upgrade AVX1 vbroadcast intrinsics
They are replaced with the same IR that is generated for the
vector-initializers in avxintrin.h.
The test verifies that we get back the original instruction. I haven't seen
this approach to be used in other auto-upgrade tests (i.e. llc + FileCheck)
but I think it's the most direct way to test this case. I believe this should
work because llc upgrades calls during parsing. (Other tests mostly check
that assembling and disassembling yields the upgraded IR.)
llvm-svn: 209863
Greg Fitzgerald [Thu, 29 May 2014 23:34:47 +0000 (23:34 +0000)]
Mark currently failing ARM tests with XFAIL.
Differential Revision: http://reviews.llvm.org/D3857
llvm-svn: 209862
Greg Fitzgerald [Thu, 29 May 2014 23:34:39 +0000 (23:34 +0000)]
Mark unstable tests as Unsupported on ARM
This is half the patch from: http://reviews.llvm.org/D3857
It lets us get deterministic results from the rest of the test suite.
llvm-svn: 209861
Chandler Carruth [Thu, 29 May 2014 23:21:12 +0000 (23:21 +0000)]
And fix my fix to sink down through the type at the right time. My
original fix would actually trigger the *exact* same crasher as the
original bug for a different reason. Awesomesauce.
Working on test cases now, but wanted to get bots healthier.
llvm-svn: 209860
Peter Collingbourne [Thu, 29 May 2014 23:10:15 +0000 (23:10 +0000)]
Permit the "if" literal suffix with Microsoft extensions enabled.
Differential Revision: http://reviews.llvm.org/D3963
llvm-svn: 209859
Nick Kledzik [Thu, 29 May 2014 23:07:20 +0000 (23:07 +0000)]
[mach-o] Add support for parsing __eh_frame section. Generalize support for whether symbols in a section are ignored or illegal
llvm-svn: 209858
Chandler Carruth [Thu, 29 May 2014 23:05:52 +0000 (23:05 +0000)]
Fix one bug in the latest incarnation of r209843 -- combining GEPs
across PHI nodes. The code was computing the Idxs from the 'GEP'
variable's indices when what it wanted was Op1's indices. This caused an
ASan heap-overflow for me that pin pointed the issue when Op1 had more
indices than GEP did. =] I'll let Louis add a specific test case for
this if he wants.
llvm-svn: 209857
Greg Fitzgerald [Thu, 29 May 2014 22:38:13 +0000 (22:38 +0000)]
light up sanitizers for ARM, take 2
Differential Revision: http://reviews.llvm.org/D3794
llvm-svn: 209856
Jeroen Ketema [Thu, 29 May 2014 22:23:22 +0000 (22:23 +0000)]
Sync list of targets with configure's reality
llvm-svn: 209855
Arnold Schwaighofer [Thu, 29 May 2014 22:10:01 +0000 (22:10 +0000)]
LoopVectorizer: Add a check that the backedge taken count + 1 does not overflow
The loop vectorizer instantiates be-taken-count + 1 as the loop iteration count.
If this expression overflows the generated code was invalid.
In case of overflow the code now jumps to the scalar loop.
Fixes PR17288.
llvm-svn: 209854
Filipe Cabecinhas [Thu, 29 May 2014 22:04:42 +0000 (22:04 +0000)]
Added tests for shufflevector lowering to blend instrs.
These tests ensure that a change I will propose in clang works as
expected.
Summary:
Added tests for the generation of blend+immediate instructions from a
shufflevector.
These tests were proposed along with a patch that was dropped. I'm
committing the tests anyway to protect against possible regressions in
codegen.
Reviewers: nadav, bkramer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D3600
llvm-svn: 209853
Greg Clayton [Thu, 29 May 2014 21:33:45 +0000 (21:33 +0000)]
iOS simulator cleanup to make sure we use "*-apple-ios" for iOS simulator apps and binaries.
Changes include:
- ObjectFileMachO can now determine if a binary is "*-apple-ios" or "*-apple-macosx" by checking the min OS and SDK load commands
- ArchSpec now says "<arch>-apple-macosx" is equivalent to "<arch>-apple-ios" since the simulator mixes and matches binaries (some from the system and most from the iOS SDK).
- Getting process inforamtion on MacOSX now correctly classifies iOS simulator processes so they have "*-apple-ios" architectures in the ProcessInstanceInfo
- PlatformiOSSimulator can now list iOS simulator processes correctly instead of showing nothing by using:
(lldb) platform select ios-simulator
(lldb) platform process list
- debugserver can now properly return "*-apple-ios" for the triple in the process info packets for iOS simulator executables
- GDBRemoteCommunicationClient now correctly passes along the triples it gets for process info by setting the OS in the llvm::Triple correctly
<rdar://problem/
17060217>
llvm-svn: 209852
Greg Fitzgerald [Thu, 29 May 2014 21:33:36 +0000 (21:33 +0000)]
Revert "light up sanitizers for ARM"
This commit broke the Windows build, where CMAKE_C_COMPILER can
compile and link with -march=armv7-a but the just-built-clang
cannot.
llvm-svn: 209851
Jeroen Ketema [Thu, 29 May 2014 21:30:28 +0000 (21:30 +0000)]
Add more log related float constants
llvm-svn: 209850
Jeroen Ketema [Thu, 29 May 2014 21:29:34 +0000 (21:29 +0000)]
Fix _F definitions
The 'f' was missing and, hence, the values were
considered to be doubles instead of floats.
Reviewed by: Tom Stellard
llvm-svn: 209849
Jeroen Ketema [Thu, 29 May 2014 21:24:57 +0000 (21:24 +0000)]
Add definition for M_PI
Reviewed by: Tom Stellard
llvm-svn: 209848
DeLesley Hutchins [Thu, 29 May 2014 21:24:16 +0000 (21:24 +0000)]
Thread Safety Analysis: implement review suggestions from Aaron Ballman.
llvm-svn: 209847
Adam Nemet [Thu, 29 May 2014 20:47:29 +0000 (20:47 +0000)]
Implement AVX1 vbroadcast intrinsics with vector initializers
These intrinsics are special because they directly take a memory operand (AVX2
adds the register counterparts). Typically, other non-memop intrinsics take
registers and then it's left to isel to fold memory operands.
In order to LICM intrinsics directly reading memory, we require that no stores
are in the loop (LICM) or that the folded load accesses constant memory
(MachineLICM). When neither is the case we fail to hoist a loop-invariant
broadcast.
We can work around this limitation if we expose the load as a regular load and
then just implement the broadcast using the vector initializer syntax. This
exposes the load to LICM and other optimizations.
At the IR level this is translated into a series of insertelements. The
sequence is already recognized as a broadcast so there is no impact on the
quality of codegen.
_mm256_broadcast_pd and _mm256_broadcast_ps are not updated by this patch
because right now we lack the DAG-combiner smartness to recover the broadcast
instructions. This will be tackled in a follow-on.
There will be completing changes on the LLVM side to remove the LLVM
intrinsics and to auto-upgrade bitcode files.
Fixes <rdar://problem/
16494520>
llvm-svn: 209846
Todd Fiala [Thu, 29 May 2014 20:44:45 +0000 (20:44 +0000)]
gdb-remote testing: new test, cleaned up socket reading.
Added new SocketPacketPump class to decouple gdb remote packet
reading from packet expectations code. This allowed for cleaner
implementation of the separate $O output streams (non-deterministic
packaging of inferior stdout/stderr) from all the rest of the packets.
Added a packet expectation matcher that can match expected accumulated
output with a timeout. Use a dictionary with "type":"output_match".
See lldbgdbserverutils.MatchRemoteOutputEntry for details.
Added a gdb remote test to verify that $Hc (continue thread selection)
plus signal delivery ($C{signo}) works. Having trouble getting this
to pass with debugserver on MacOSX 10.9. Tried different variants,
including $vCont;C{signo}:{thread-id};c. In some cases, I get the
test exe's signal handler to run ($vCont variant first time), in others I don't
($vCont second and further times). $C{signo} doesn't hit the signal
handler code at all in the test exe but delivers a stop. Further
$Hc and $C{signo} deliver the stop marking the wrong thread. For now I'm
marking the test as XFAIL on dsym/debugserver. Will revisit this on
lldb-dev.
Updated the text exe for these tests to support thread:print-ids (each
thread announces its thread id) and provide a SIGUSR1 thread handler
that prints out the thread id on which it was signaled.
llvm-svn: 209845
Nick Kledzik [Thu, 29 May 2014 20:44:21 +0000 (20:44 +0000)]
[mach-o] Add support for parsing CFString sections
llvm-svn: 209844
Louis Gerbarg [Thu, 29 May 2014 20:29:47 +0000 (20:29 +0000)]
Add support for combining GEPs across PHI nodes
Currently LLVM will generally merge GEPs. This allows backends to use more
complex addressing modes. In some cases this is not happening because there
is PHI inbetween the two GEPs:
GEP1--\
|-->PHI1-->GEP3
GEP2--/
This patch checks to see if GEP1 and GEP2 are similiar enough that they can be
cloned (GEP12) in GEP3's BB, allowing GEP->GEP merging (GEP123):
GEP1--\ --\ --\
|-->PHI1-->GEP3 ==> |-->PHI2->GEP12->GEP3 == > |-->PHI2->GEP123
GEP2--/ --/ --/
This also breaks certain use chains that are preventing GEP->GEP merges that the
the existing instcombine would merge otherwise.
Tests included.
llvm-svn: 209843
DeLesley Hutchins [Thu, 29 May 2014 20:28:53 +0000 (20:28 +0000)]
Thread Safety Analysis: minor changes to TIL pretty-printing.
llvm-svn: 209842
Diego Novillo [Thu, 29 May 2014 20:13:27 +0000 (20:13 +0000)]
Add documentation for -Rpass*
Summary:
This adds documentation for -Rpass, -Rpass-missed and -Rpass-analysis.
It also adds release notes for 3.5.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3730
llvm-svn: 209841
Chad Rosier [Thu, 29 May 2014 19:59:58 +0000 (19:59 +0000)]
Update Credits.
llvm-svn: 209840
Diego Novillo [Thu, 29 May 2014 19:55:06 +0000 (19:55 +0000)]
Add flags -Rpass-missed and -Rpass-analysis.
Summary:
These two flags are in the same family as -Rpass, but are used in
different situations.
-Rpass-missed is used by optimizers to inform the user when they tried
to apply an optimization but couldn't (or wouldn't).
-Rpass-analysis is used by optimizers to report analysis results back
to the user (e.g., why the transformation could not be applied).
Depends on D3682.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3683
llvm-svn: 209839
Sebastian Pop [Thu, 29 May 2014 19:44:09 +0000 (19:44 +0000)]
implement missing SCEVDivision case
without this case we would end on an infinite recursion: the remainder is zero,
so Numerator - Remainder is equal to Numerator and so we would recursively ask
for the division of Numerator by Denominator.
llvm-svn: 209838
Sebastian Pop [Thu, 29 May 2014 19:44:05 +0000 (19:44 +0000)]
fail to find dimensions when ElementSize is nullptr
when ScalarEvolution::getElementSize returns nullptr it is safe to early return
in ScalarEvolution::findArrayDimensions such that we avoid later problems when
we try to divide the terms by ElementSize.
llvm-svn: 209837
Bob Wilson [Thu, 29 May 2014 19:43:02 +0000 (19:43 +0000)]
Make the -mno-global-merge option work for arm64/aarch64. rdar://
17024719
llvm-svn: 209836
Greg Fitzgerald [Thu, 29 May 2014 19:01:32 +0000 (19:01 +0000)]
light up sanitizers for ARM
You can expect the sanitizers to be built under any of the following conditions:
1) CMAKE_C_COMPILER is GCC built to cross-compile to ARM
2) CMAKE_C_COMPILER is Clang built to cross-compile to ARM (ARM is default target)
3) CMAKE_C_COMPILER is Clang and CMAKE_C_FLAGS contains -target and --sysroot
Differential Revision: http://reviews.llvm.org/D3794
llvm-svn: 209835
Alexey Samsonov [Thu, 29 May 2014 18:40:48 +0000 (18:40 +0000)]
Use range-based for loops in ASan, TSan and MSan
llvm-svn: 209834
Greg Clayton [Thu, 29 May 2014 17:52:46 +0000 (17:52 +0000)]
Fixed the Module::Module(ModuleSpec) constructor to properly copy the file offset and object file mod time from the actual module specifications so we will always be able to directly load the image we care about when calling Module::GetObjectFile().
llvm-svn: 209833
Reid Kleckner [Thu, 29 May 2014 17:12:05 +0000 (17:12 +0000)]
[ADT] Delete the Twine assignment operator
This makes it slightly harder to misuse Twines. It is still possible to
refer to destroyed temporaries with the regular constructors, though.
Patch by Marco Alesiani!
llvm-svn: 209832
Nico Rieck [Thu, 29 May 2014 16:57:34 +0000 (16:57 +0000)]
Make runlines consistent with other dll attribute tests
llvm-svn: 209831
Nico Rieck [Thu, 29 May 2014 16:57:18 +0000 (16:57 +0000)]
Fix some minor typos in tests
llvm-svn: 209830
Adrian Prantl [Thu, 29 May 2014 16:56:48 +0000 (16:56 +0000)]
Debug Info: Remove unused code. The MInsn of an _abstract_ variable is
never used again and updating the abstract variable for each inlined
instance of it was questionable in the first place.
llvm-svn: 209829
Diego Novillo [Thu, 29 May 2014 16:52:06 +0000 (16:52 +0000)]
Add missing -S to avoid invoking assembler unnecessarily.
llvm-svn: 209828
Nico Rieck [Thu, 29 May 2014 16:51:19 +0000 (16:51 +0000)]
Sema: Functions with dll attributes cannot be deleted
llvm-svn: 209827
Nico Rieck [Thu, 29 May 2014 16:50:46 +0000 (16:50 +0000)]
MS ABI: Emit static data members with proper linkage
llvm-svn: 209826
Nico Rieck [Thu, 29 May 2014 16:50:20 +0000 (16:50 +0000)]
Sema: Check dll attributes on static data members
Redeclarations cannot add a dll attribute and static data members cannot
be defined.
llvm-svn: 209825