Dmitry Vyukov [Tue, 8 Jul 2014 13:36:59 +0000 (13:36 +0000)]
tsan: fix a potential hang
idx0 is not updated in the branch,
so if we take that branch idx0 will stay updated forever
llvm-svn: 212532
Dmitry Vyukov [Tue, 8 Jul 2014 13:28:01 +0000 (13:28 +0000)]
tsan: fix a bug in metamap
The bug happens in the following case:
Mutex is located at heap block beginning,
when we call MutexDestroy, s->next is set to 0,
so free can't find the MBlock related to the block.
llvm-svn: 212531
Timur Iskhodzhanov [Tue, 8 Jul 2014 13:18:58 +0000 (13:18 +0000)]
[ASan/Win] Don't instrument private COMDAT globals until PR20244 is properly fixed
llvm-svn: 212530
Kostya Serebryany [Tue, 8 Jul 2014 13:16:03 +0000 (13:16 +0000)]
[tsan] fix deadlock detector's interoperation with java locks (https://code.google.com/p/thread-sanitizer/issues/detail?id=67)
llvm-svn: 212529
Daniel Sanders [Tue, 8 Jul 2014 13:13:42 +0000 (13:13 +0000)]
[mips] Fixed struct/class mismatch introduced in r212522.
Clang emits a warning about this.
llvm-svn: 212528
Dmitry Vyukov [Tue, 8 Jul 2014 13:07:23 +0000 (13:07 +0000)]
tsan: remove unnecessary line split
llvm-svn: 212527
Kostya Serebryany [Tue, 8 Jul 2014 12:46:30 +0000 (12:46 +0000)]
[tsan] fix pthread_rwlock_tryrdlock interceptor, don't try to detect deadlocks when reporting bad unlock
llvm-svn: 212526
Alexander Musman [Tue, 8 Jul 2014 11:33:21 +0000 (11:33 +0000)]
[OPENMP] Allow ‘reduction’ clause on ‘omp simd’ directive.
llvm-svn: 212525
Richard Sandiford [Tue, 8 Jul 2014 11:10:34 +0000 (11:10 +0000)]
Move misplaced x86_32 ABI code
r184166 added an X86_32 function in the middle of the SystemZ code.
The SystemZ port had been added only a couple of weeks earlier and
the original patch probably predated that.
No behavioral change intended.
llvm-svn: 212524
Daniel Sanders [Tue, 8 Jul 2014 10:35:52 +0000 (10:35 +0000)]
Fix r212522 - [mips] Improve encapsulation of the .MIPS.abiflags implementation and limit scope of related enums
Added two lines that should have been in r212522.
llvm-svn: 212523
Daniel Sanders [Tue, 8 Jul 2014 10:11:38 +0000 (10:11 +0000)]
[mips] Improve encapsulation of the .MIPS.abiflags implementation and limit scope of related enums
Summary:
Follow on to r212519 to improve the encapsulation and limit the scope of the enums.
Also merged two very similar parser functions, fixed a bug where ASE's
were not being reported, and marked CPR1's as being 128-bit when MSA is
enabled.
Differential Revision: http://reviews.llvm.org/D4384
llvm-svn: 212522
Renato Golin [Tue, 8 Jul 2014 10:06:16 +0000 (10:06 +0000)]
Revert "Refactor ARM subarchitecture parsing"
This reverts commit
7b4a6882467e7fef4516a0cbc418cbfce0fc6f6d.
llvm-svn: 212521
Arnaud A. de Grandmaison [Tue, 8 Jul 2014 09:53:04 +0000 (09:53 +0000)]
Truncate the immediate in logical operation to the register width
And continue to produce an error if the 32 most significant bits are not all ones or zeros.
llvm-svn: 212520
Vladimir Medic [Tue, 8 Jul 2014 08:59:22 +0000 (08:59 +0000)]
Mips.abiflags is a new implicitly generated section that will be present on all new modules. The section contains a versioned data structure which represents essentially information to allow a program loader to determine the requirements of the application. This patch implements mips.abiflags section and provides test cases for it.
llvm-svn: 212519
Viktor Kutuzov [Tue, 8 Jul 2014 08:52:57 +0000 (08:52 +0000)]
Support building floating-point facilities on FreeBSD 9.2 in 32-bit mode
Differential Revision: http://reviews.llvm.org/D3909
llvm-svn: 212518
Chandler Carruth [Tue, 8 Jul 2014 08:45:38 +0000 (08:45 +0000)]
[x86,SDAG] Sink the logic for folding shuffles of splats more
aggressively from the x86 shuffle lowering to the generic SDAG vector
shuffle formation code.
This code already tried to fold away shuffles of splats! It just had
lots of bugs and couldn't handle the case my new x86 shuffle lowering
needed.
First, it failed to correctly compute whether N2 was undef because it
pre-computed this, then did transformations which could *make* N2 undef,
then failed to ever re-consider the precomputed state.
Second, it didn't look through bitcasts at all, even in the safe cases
where they are just element-type bitcasts with no change to the number
of elements.
Third, it didn't handle all-zero bit casts nicely the way my code in the
x86 side of things did, which is essential to getting good zext-shuffle
lowerings.
But all of these are generic. I just ported the code down to this layer
and fixed the surrounding bugs. Tests exercising this in the x86 backend
still pass and some silly code in widen_cast-6.ll gets better. I updated
that test to be a bit more precise but it's still pretty unclear what
the value of the test is in this day and age.
llvm-svn: 212517
Alexey Bataev [Tue, 8 Jul 2014 08:12:03 +0000 (08:12 +0000)]
[OPENMP] Parsing and sema analysis for 'omp parallel sections' directive.
llvm-svn: 212516
Chandler Carruth [Tue, 8 Jul 2014 07:44:15 +0000 (07:44 +0000)]
[SDAG] Actually check for a non-constant splat and clarify comments
around the handling of UNDEF lanes in boolean vector content analysis.
The code before my changes here also failed to check for non-constant
splats in a buildvector. I have no idea how to trigger this, I just
spotted by inspection when trying to understand the code. It seems
extremely unlikely to be worth the trouble to teach the only caller of
this code (DAG combining setcc patterns) how to cleverly handle undef
lanes, so I've just commented more thoroughly that we're giving up
there.
llvm-svn: 212515
Chandler Carruth [Tue, 8 Jul 2014 07:19:55 +0000 (07:19 +0000)]
[SDAG] Build up a more rich set of APIs for querying build-vector SDAG
nodes about whether they are splats. This is factored out and improved
from r212324 which got reverted as it was far too aggressive. The new
API should help more conservatively handle buildvectors that are
a mixture of splatted and undef values.
No functionality change at this point. The hope is to slowly
re-introduce the undef-tolerant optimization of splats, but each time
being forced to make a concious decision about how to handle the undefs
in a way that doesn't lead to contradicting assumptions about the
collapsed value.
Hal has pointed out in discussions that this may not end up being the
desired API and instead it may be more convenient to get a mask of the
undef elements or something similar. I'm starting simple and will expand
the API as I adapt actual callers and see exactly what they need.
llvm-svn: 212514
Todd Fiala [Tue, 8 Jul 2014 06:42:37 +0000 (06:42 +0000)]
Enable multi-process testing for MacOSX.
This change modifies the way the multi-threaded test runner works.
It uses the Python multiprocessing library rather than the threading
library. Investigation showed that all MacOSX threads were waiting on
the global python lock when using the threading approach. Not sure
why that differed from the Linux/FreeBSD implementations.
The new approach uses the multiprocessing library's Pool class. It's
mildly cleaner than the other version, runs multithreaded on MacOSX,
and seems to have caused no performance regression on Linux. The
worker thread logic is simpler with the Pool managing the worker
processes.
This also includes a minor change to the test runner's python
lldb dir logic using the -P option. It now looks at the last line
of output rather than the first line. This covers part of the issue
of extra options validation logic getting spit out. The test runner
will now pick up the right python library directory. It does not
fix all the issues, though, as a ton of tests (50+ on Linux) are
failing due to unexpected output when running lldb.
llvm-svn: 212513
Saleem Abdulrasool [Tue, 8 Jul 2014 05:46:04 +0000 (05:46 +0000)]
Headers: conditionalise more declarations
Protect MMX specific declarations under a __MMX__ guard. This header can be
included on non-x86 architectures (e.g. ARM) which do not support the MMX ISA.
Use the preprocessor to prevent these declarations from being processed.
llvm-svn: 212512
Saleem Abdulrasool [Tue, 8 Jul 2014 05:46:00 +0000 (05:46 +0000)]
Headers: mark arm_acle.h with extern "C"
Although the functions are marked as always_inline, the compiler with which they
are used may not honour the extended attributes and emit them as functions. In
such a case, indicate that they should have extern "C" linkage and should not be
mangled in C++ style if used within C++.
llvm-svn: 212511
Zachary Turner [Tue, 8 Jul 2014 04:52:15 +0000 (04:52 +0000)]
Implment "platform process list" for Windows.
This patch implements basic functionality of the "platform process
list" command for Windows. Currently this has the following
limitations.
* Certain types of filtering are not enabled (e.g. filtering by
architecture with -a), although most filters work.
* The username of the process is not yet obtained.
* Using -v to list verbose information generates an error.
* The architecture column displays the entire triple, leading to
misaligned formatting of the printed table.
Reviewed by: Greg Clayton
Differential Revision: http://reviews.llvm.org/D4413
llvm-svn: 212510
Zachary Turner [Tue, 8 Jul 2014 04:28:07 +0000 (04:28 +0000)]
Fix a compilation failure caused by a non-const reference.
llvm-svn: 212509
Reid Kleckner [Tue, 8 Jul 2014 02:24:27 +0000 (02:24 +0000)]
MS ABI: "Fix" passing non-POD structs by value to variadic functions
Of course, such code is horribly broken and will explode on impact.
That said, ATL does it, and we have to support them, at least a little
bit.
Fixes PR20191.
llvm-svn: 212508
Jim Ingham [Tue, 8 Jul 2014 01:10:49 +0000 (01:10 +0000)]
Add docs for the "thread.completed-expression" format entry.
llvm-svn: 212507
Jim Ingham [Tue, 8 Jul 2014 01:07:32 +0000 (01:07 +0000)]
If a hand-called function is interrupted by hitting a breakpoint, then
when you continue to finish off the function call, the expression result
will be included as part of the thread stop info.
llvm-svn: 212506
Alexey Samsonov [Tue, 8 Jul 2014 00:50:49 +0000 (00:50 +0000)]
[ASan] Completely remove sanitizer blacklist file from instrumentation pass.
All blacklisting logic is now moved to the frontend (Clang).
If a function (or source file it is in) is blacklisted, it doesn't
get sanitize_address attribute and is therefore not instrumented.
If a global variable (or source file it is in) is blacklisted, it is
reported to be blacklisted by the entry in llvm.asan.globals metadata,
and is not modified by the instrumentation.
The latter may lead to certain false positives - not all the globals
created by Clang are described in llvm.asan.globals metadata (e.g,
RTTI descriptors are not), so we may start reporting errors on them
even if "module" they appear in is blacklisted. We assume it's fine
to take such risk:
1) errors on these globals are rare and usually indicate wild memory access
2) we can lazily add descriptors for these globals into llvm.asan.globals
lazily.
llvm-svn: 212505
Adam Nemet [Tue, 8 Jul 2014 00:22:32 +0000 (00:22 +0000)]
[X86] AVX512: Only allow k1-k7 as predicates to vpcmp*
As destination k0 is allowed but not as predicate/writemask.
I also modified the test to allow checking of error messages by the assembler.
I applied a similar approach to the test ret.s in the same directory.
llvm-svn: 212504
Alexey Samsonov [Tue, 8 Jul 2014 00:03:11 +0000 (00:03 +0000)]
Kill unnecessary include
llvm-svn: 212503
Alp Toker [Tue, 8 Jul 2014 00:02:05 +0000 (00:02 +0000)]
Rename static function to better describe its purpose
llvm-svn: 212502
Alexey Samsonov [Mon, 7 Jul 2014 23:59:57 +0000 (23:59 +0000)]
[Sanitizer] Remove brittle cache variable and slightly simplify blacklisting code.
Now CodeGenFunction is responsible for looking at sanitizer blacklist
(in CodeGenFunction::StartFunction) and turning off instrumentation,
if necessary.
No functionality change.
llvm-svn: 212501
Zachary Turner [Mon, 7 Jul 2014 23:54:51 +0000 (23:54 +0000)]
Invalidate process UID/GID-related command options on Windows.
Windows uses a different process security model and does not have
a concept of process UID or GID. This patch makes these options
invalid on Windows. Attempting to specify these options when the
current platform is Windows will generate an error.
Reviewed by: Jim Ingham
Differential Revision: http://reviews.llvm.org/D4373
llvm-svn: 212500
Alexey Samsonov [Mon, 7 Jul 2014 23:34:34 +0000 (23:34 +0000)]
[Sanitizer] Reduce the usage of sanitizer blacklist in CodeGenModule
Get rid of cached CodeGenModule::SanOpts, which was used to turn off
sanitizer codegen options if current LLVM Module is blacklisted, and use
plain LangOpts.Sanitize instead.
1) Some codegen decisions (turning TBAA or writable strings on/off)
shouldn't depend on the contents of blacklist.
2) llvm.asan.globals should *always* be created, even if the module
is blacklisted - soon Clang's CodeGen where we read sanitizer
blacklist files, so we should properly report which globals are
blacklisted to the backend.
llvm-svn: 212499
Andrea Di Biagio [Mon, 7 Jul 2014 23:25:23 +0000 (23:25 +0000)]
[x86] Fix assertion failure caused by a wrong combine of PSHUFD nodes with different types.
When combining a sequence of two PSHUFD dag nodes into a single PSHUFD,
make sure that we assign the correct type to the resulting PSHUFD.
X86ISD::PSHUFD dag nodes can be either MVT::v4i32 or MVT::v4f32.
Before this change, an assertion failure was triggered in method
'DAGCombinerInfo::CombineTo' when trying to combine the shuffles from the test
below into a single PSHUFD.
define <4 x float> @test1(<4 x float> %V) {
%1 = shufflevector <4 x float> %V, <4 x float> undef, <4 x i32> <i32 3, i32 0, i32 2, i32 1>
%2 = shufflevector <4 x float> %1, <4 x float> undef, <4 x i32> <i32 3, i32 0, i32 2, i32 1>
ret <4 x float> %2
}
llvm-svn: 212498
Alp Toker [Mon, 7 Jul 2014 22:42:03 +0000 (22:42 +0000)]
libclang: pass return code out argument by reference
r212427 formalized the message-passing pattern by making these argument
structures const. This commit changes output arguments to get passed by
reference so we can eliminate mutable fields.
llvm-svn: 212497
Joe Groff [Mon, 7 Jul 2014 22:25:15 +0000 (22:25 +0000)]
ASTContext: Factor 'getObjCEncodingForPropertyType' as its own method.
It is useful to get the property encoding for an ObjC type without a full
ObjCPropertyDecl.
llvm-svn: 212496
Sanjay Patel [Mon, 7 Jul 2014 22:13:58 +0000 (22:13 +0000)]
fixed some typos
llvm-svn: 212495
Alp Toker [Mon, 7 Jul 2014 21:57:42 +0000 (21:57 +0000)]
PlistSupport: make utility functions non-static inline to encourage linker dedup
llvm-svn: 212494
Juergen Ributzka [Mon, 7 Jul 2014 21:52:21 +0000 (21:52 +0000)]
[FastISel][X86] Fix smul.with.overflow.i8 lowering.
Add custom lowering code for signed multiply instruction selection, because the
default FastISel instruction selection for ISD::MUL will use unsigned multiply
for the i8 type and signed multiply for all other types. This would set the
incorrect flags for the overflow check.
This fixes <rdar://problem/
17549300>
llvm-svn: 212493
Louis Gerbarg [Mon, 7 Jul 2014 21:37:51 +0000 (21:37 +0000)]
Allow AArch64FastISel to degrade graceully in the presence of an MVT::i128
Currently AArch64FastISel crashes if it tries to extend an integer into an
MVT::i128. This can happen by creating 128 bit integers like so:
typedef unsigned int uint128_t __attribute__((mode(TI)));
typedef int sint128_t __attribute__((mode(TI)));
This patch makes EmitIntExt check for their presence and then falls back to
SelectionDAG.
Tests included.
rdar://
17516686
llvm-svn: 212492
Todd Fiala [Mon, 7 Jul 2014 21:28:37 +0000 (21:28 +0000)]
Mark test_watchpoint_multiple_threads_with_dwarf as XFAIL on Linux/clang.
See http://llvm.org/bugs/show_bug.cgi?id=20233 for details.
llvm-svn: 212491
Sanjay Patel [Mon, 7 Jul 2014 21:19:00 +0000 (21:19 +0000)]
Fix for PR17073 ( llvm.org/pr17073 ), simplifycfg illegally hoists an operation in a phi node that can trap.
This patch adds to an existing loop over phi nodes in SimplifyCondBranchToCondBranch() to check for trapping ops and bails out of the optimization if we find one of those.
The test cases verify that trapping ops are not hoisted and non-trapping ops are still optimized as expected.
llvm-svn: 212490
Todd Fiala [Mon, 7 Jul 2014 21:13:39 +0000 (21:13 +0000)]
Mark Radar9974002DataFormatterTestCase test XFAIL on Linux.
See http://llvm.org/bugs/show_bug.cgi?id=20232 for details.
llvm-svn: 212489
Todd Fiala [Mon, 7 Jul 2014 21:07:41 +0000 (21:07 +0000)]
Marked TestLongjmp.py tests XFAIL for Linux.
See http://llvm.org/bugs/show_bug.cgi?id=20231
llvm-svn: 212488
Alexey Samsonov [Mon, 7 Jul 2014 20:59:10 +0000 (20:59 +0000)]
[MSan] Make one more test standalone
llvm-svn: 212487
Todd Fiala [Mon, 7 Jul 2014 20:58:38 +0000 (20:58 +0000)]
Marked TestFormatters.py XFAIL on Linux per pr20230.
See http://www.llvm.org/bugs/show_bug.cgi?id=20230 for details.
llvm-svn: 212486
Todd Fiala [Mon, 7 Jul 2014 20:47:24 +0000 (20:47 +0000)]
Allow specification of no source display on stop.
See http://llvm.org/bugs/show_bug.cgi?id=20149 for details.
Change by Randy Smith.
llvm-svn: 212485
Alexey Samsonov [Mon, 7 Jul 2014 20:37:12 +0000 (20:37 +0000)]
[MSan] Use a single file for dso-origin test
llvm-svn: 212484
Rafael Espindola [Mon, 7 Jul 2014 20:34:51 +0000 (20:34 +0000)]
Use raw_fd_ostream instead of std::ofstream.
llvm-svn: 212483
David Majnemer [Mon, 7 Jul 2014 20:29:00 +0000 (20:29 +0000)]
CMake: Let LLDB build with CMake 3
Teach add_lldb_library to correctly use the CMake 2.8.12
PUBLIC/PRIVATE/INTERFACE keywords. LLDB's CMake configuration would
inconsistently apply these keywords; this was previously a warning in
CMake 2.x but became an error in CMake 3.
llvm-svn: 212482
Reid Kleckner [Mon, 7 Jul 2014 20:23:27 +0000 (20:23 +0000)]
Driver: Produce crash diagnostics more often on Windows
Assertion failures call abort(), which return an exit code of 3 on
Windows. The 'not' utility has the same check.
Unfortunately, the crash-report.c test requires a shell, so it does not
run for me locally, so I can only test this manually.
There's still more work to be done here: we should generate a batch
script instead of a shell script on Windows.
llvm-svn: 212481
Simon Atanasyan [Mon, 7 Jul 2014 20:14:49 +0000 (20:14 +0000)]
[Mips] Make rel-dynamic-05.test test case independent from external input files.
llvm-svn: 212480
Renato Golin [Mon, 7 Jul 2014 20:01:11 +0000 (20:01 +0000)]
Refactor ARM subarchitecture parsing
According to a FIXME in ARMMCTargetDesc.cpp the ARM version parsing should be
in the Triple helper class.
Patch by: Gabor Ballabas
llvm-svn: 212479
Ulrich Weigand [Mon, 7 Jul 2014 19:41:54 +0000 (19:41 +0000)]
[PowerPC] Fix testcase regression
Use -mcpu to avoid different codegen depending on host platform.
llvm-svn: 212478
Ulrich Weigand [Mon, 7 Jul 2014 19:39:44 +0000 (19:39 +0000)]
[PowerPC] Fix no-assert build
r212476 caused a compile failure (unused variable) in a non-assertion
build ...
llvm-svn: 212477
Ulrich Weigand [Mon, 7 Jul 2014 19:26:41 +0000 (19:26 +0000)]
[PowerPC] Fix "byval align" arguments
Arguments passed as "byval align" should get the specified alignment
in the parameter save area. There was some code in PPCISelLowering.cpp
that attempted to implement this, but this didn't work correctly:
while code did update the ArgOffset value, it neglected to update
the PtrOff value (which was already computed from the old ArgOffset),
and it also neglected to update GPR_idx -- fields skipped due to
alignment in the save area must likewise be skipped in GPRs.
This patch fixes and simplifies this logic by:
- handling argument offset alignment right at the beginning
of argument processing, using a new helper routine
CalculateStackSlotAlignment (this avoids having to update
PtrOff and other derived values later on)
- not tracking GPR_idx separately, but always computing the
correct GPR_idx for each argument *from* its ArgOffset
- removing some redundant computation in LowerFormalArguments:
MinReservedArea must equal ArgOffset after argument processing,
so there's no use in computing it twice.
[This doesn't change the behavior of the current clang front-end,
since that never creates "byval align" arguments at the moment.
This will change with a follow-on patch, however.]
llvm-svn: 212476
Chandler Carruth [Mon, 7 Jul 2014 19:03:32 +0000 (19:03 +0000)]
[x86] Revert r212324 which was too aggressive w.r.t. allowing undef
lanes in vector splats.
The core problem here is that undef lanes can't *unilaterally* be
considered to contribute to splats. Their handling needs to be more
cautious. There is also a reported failure of the nightly testers
(thanks Tobias!) that may well stem from the same core issue. I'm going
to fix this theoretical issue, factor the APIs a bit better, and then
verify that I don't see anything bad with Tobias's reduction from the
test suite before recommitting.
Original commit message for r212324:
[x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for
any constant, constant FP, or undef splat and to tolerate any undef
lanes in a splat, then replace all uses of isSplatVector in X86's
lowering with it.
This fixes issues where undef lanes in an otherwise splat vector would
prevent the splat logic from firing. It is a touch more awkward to use
this interface, but it is much more accurate. Suggestions for better
interface structuring welcome.
With this fix, the code generated with the widening legalization
strategy for widen_cast-4.ll is *dramatically* improved as the special
lowering strategies for a v16i8 SRA kick in even though the high lanes
are undef.
We also get a slightly different choice for broadcasting an aligned
memory location, and use vpshufd instead of vbroadcastss. This looks
like a minor win for pipelining and domain crossing, but a minor loss
for the number of micro-ops. I suspect its a wash, but folks can
easily tweak the lowering if they want.
llvm-svn: 212475
Alexey Samsonov [Mon, 7 Jul 2014 18:47:29 +0000 (18:47 +0000)]
[Sanitizer] Move test for malloc/free hooks under test/sanitizer_common
llvm-svn: 212474
Matt Arsenault [Mon, 7 Jul 2014 18:34:45 +0000 (18:34 +0000)]
R600: Fix mishandling of load / store chains.
Fixes various bugs with reordering loads and stores.
Scalarized vector loads weren't collecting the chains
at all.
llvm-svn: 212473
Matt Arsenault [Mon, 7 Jul 2014 18:34:42 +0000 (18:34 +0000)]
Fix typo, weird indentation
llvm-svn: 212472
Alexey Samsonov [Mon, 7 Jul 2014 18:11:24 +0000 (18:11 +0000)]
[ASan] Clean up leftovers from assembly instrumentation helpers
llvm-svn: 212471
Tom Stellard [Mon, 7 Jul 2014 17:46:45 +0000 (17:46 +0000)]
prepare-builtins: Fix broken build due to recent LLVM API change
llvm-svn: 212470
Alexey Samsonov [Mon, 7 Jul 2014 17:39:31 +0000 (17:39 +0000)]
Generalize sanitizer allocator public interface.
Introduce new public header <sanitizer/allocator_interface.h> and a set
of functions __sanitizer_get_ownership(), __sanitizer_malloc_hook() etc.
that will eventually replace their tool-specific equivalents
(__asan_get_ownership(), __msan_get_ownership() etc.). Tool-specific
functions are now deprecated and implemented as stubs redirecting
to __sanitizer_ versions (which are implemented differently in each tool).
Replace all uses of __xsan_ versions with __sanitizer_ versions in unit
and lit tests.
llvm-svn: 212469
Justin Bogner [Mon, 7 Jul 2014 17:34:40 +0000 (17:34 +0000)]
Driver: Fix think-o in adding -ivfsoverlay flag to crashdumps
If there isn't a VFS to overlay we shouldn't be adding a -ivfsoverlay
flag.
llvm-svn: 212468
Ben Langmuir [Mon, 7 Jul 2014 17:34:37 +0000 (17:34 +0000)]
Use temporary module cache in test
llvm-svn: 212467
Manuel Klimek [Mon, 7 Jul 2014 17:00:49 +0000 (17:00 +0000)]
Fix memory leak in FileSystemStatCache.
Patch by Guochun Shi.
llvm-svn: 212466
Timur Iskhodzhanov [Mon, 7 Jul 2014 16:22:04 +0000 (16:22 +0000)]
[ASan/Win] Unbreak the build after r211216
llvm-svn: 212465
Anders Carlsson [Mon, 7 Jul 2014 15:53:44 +0000 (15:53 +0000)]
Handle __builtin_clzs and __builtin_ctzs in the constant expression evaluator.
llvm-svn: 212464
David Majnemer [Mon, 7 Jul 2014 15:29:16 +0000 (15:29 +0000)]
MS ABI: Don't unnecessarily use CGM abstraction
If we are in MicrosoftCXXABI, we don't need to use CGM to get a
TypeDescriptor.
llvm-svn: 212463
David Majnemer [Mon, 7 Jul 2014 15:29:10 +0000 (15:29 +0000)]
Fix comment typo.
No functionality changed.
llvm-svn: 212462
Tim Northover [Mon, 7 Jul 2014 15:26:53 +0000 (15:26 +0000)]
[testing]: lld generally lives in tools/, so fix llvm-lit.
Otherwise we can't run individual tests directly ("llvm-lit /path/to/test")
llvm-svn: 212461
Benjamin Kramer [Mon, 7 Jul 2014 14:47:51 +0000 (14:47 +0000)]
Make helper functions static.
llvm-svn: 212460
Tim Northover [Mon, 7 Jul 2014 14:06:42 +0000 (14:06 +0000)]
X86: revert unintentional change to X86FastISel.
This crept in with r212443.
llvm-svn: 212459
Alp Toker [Mon, 7 Jul 2014 14:02:39 +0000 (14:02 +0000)]
PTHInternals.rst: PCH is now a thing, update docs to reflect it
llvm-svn: 212458
Alp Toker [Mon, 7 Jul 2014 14:01:37 +0000 (14:01 +0000)]
PTH: use a variable instead of a macro
Cleanup only.
llvm-svn: 212457
Evgeniy Stepanov [Mon, 7 Jul 2014 13:59:12 +0000 (13:59 +0000)]
[asan] Remove runtime assembly helpers.
Remove helper functions that were used in assembly instrumentation.
Patch by Yuri Gorshenin.
llvm-svn: 212456
Evgeniy Stepanov [Mon, 7 Jul 2014 13:57:37 +0000 (13:57 +0000)]
[asan] Generate asm instrumentation in MC.
Generate entire ASan asm instrumentation in MC without
relying on runtime helper functions.
Patch by Yuri Gorshenin.
llvm-svn: 212455
Evgeniy Stepanov [Mon, 7 Jul 2014 13:28:31 +0000 (13:28 +0000)]
[msan] Fix handling of phi in blacklisted functions.
llvm-svn: 212454
Alexey Bataev [Mon, 7 Jul 2014 13:01:15 +0000 (13:01 +0000)]
[OPENMP] Added initial support for 'omp parallel for'.
llvm-svn: 212453
Manuel Klimek [Mon, 7 Jul 2014 12:55:16 +0000 (12:55 +0000)]
Increase argument limit of anyOf, allOf and eachOf from 5 to 9.
Patch by Alexey Sokolov.
llvm-svn: 212452
Alp Toker [Mon, 7 Jul 2014 11:07:10 +0000 (11:07 +0000)]
Move ChainedIncludesSource into the implementation
This doesn't need to be in the headers.
llvm-svn: 212451
Alp Toker [Mon, 7 Jul 2014 11:06:51 +0000 (11:06 +0000)]
ChainedIncludesSource: avoid copying n*(n+1)/2 file contents into memory
Just reference the data instead with shallow MemoryBuffer instances.
llvm-svn: 212450
Benjamin Kramer [Mon, 7 Jul 2014 11:01:16 +0000 (11:01 +0000)]
InstCombine: Simplify code, no functionality change.
llvm-svn: 212449
Evgeniy Stepanov [Mon, 7 Jul 2014 10:45:15 +0000 (10:45 +0000)]
[msan] Increase hash table size for chained origins.
llvm-svn: 212448
Yaron Keren [Mon, 7 Jul 2014 09:52:31 +0000 (09:52 +0000)]
PointerLoc does not exist anymore.
SourceLocation is available from TypeLoc member functions.
llvm-svn: 212447
Tobias Grosser [Mon, 7 Jul 2014 09:39:09 +0000 (09:39 +0000)]
Revert "Add lib/Codgen/[CGRTTI|MicrosoftRTTI].cpp to CMakeLists.txt (r212445)"
I misidentified the problem and did not test suffifiently. The files had
correctly been removed, but for some reason they still remained in my git
checkout. Not adding the files back to CMakeLists.txt, but rather removing
the stale files was the solution. Sorry for the unnecessary noise.
llvm-svn: 212446
Tobias Grosser [Mon, 7 Jul 2014 09:23:06 +0000 (09:23 +0000)]
Add lib/Codgen/[CGRTTI|MicrosoftRTTI].cpp to CMakeLists.txt
This fixes the cmake builds.
llvm-svn: 212445
Chandler Carruth [Mon, 7 Jul 2014 09:06:58 +0000 (09:06 +0000)]
[x86] Teach the new vector shuffle lowering code to handle what is
essentially a DAG combine that never gets a chance to run.
We might typically expect DAG combining to remove shuffles-of-splats and
other similar patterns, but we don't get a chance to run the DAG
combiner when we recursively form sub-shuffles during the lowering of
a shuffle. So instead hand-roll a really important combine directly into
the lowering code to detect shuffles-of-splats, especially shuffles of
an all-zero splat which needn't even have the same element width, etc.
This lets the new vector shuffle lowering handle shuffles which
implement things like zero-extension really nicely. This will become
even more important when I wire the legalization of zero-extension to
vector shuffles with the new widening legalization strategy.
llvm-svn: 212444
Tim Northover [Mon, 7 Jul 2014 09:06:35 +0000 (09:06 +0000)]
CodeGen: it turns out that NAND is not the same thing as BIC. At all.
We've been performing the wrong operation on ARM for "atomicrmw nand" for
years, since "a NAND b" is "~(a & b)" rather than ARM's very tempting "a & ~b".
This bled over into the generic expansion pass.
So I assume no-one has ever actually tried to do an atomic nand in the real
world. Oh well.
llvm-svn: 212443
Alp Toker [Mon, 7 Jul 2014 09:02:20 +0000 (09:02 +0000)]
Switch over a few uses of param_begin() to parameters()
llvm-svn: 212442
Alp Toker [Mon, 7 Jul 2014 08:37:15 +0000 (08:37 +0000)]
Remove unused sys/stat.h includes
The facility was abstracted to LLVM in r187364.
llvm-svn: 212441
Evgeniy Stepanov [Mon, 7 Jul 2014 08:31:55 +0000 (08:31 +0000)]
[msan] Better hash function for chained origins.
llvm-svn: 212440
David Majnemer [Mon, 7 Jul 2014 08:09:15 +0000 (08:09 +0000)]
CodeGen: Cleanup MS ABI RTTI LLVM IR
The MS ABI RTTI emission code would choose names for IR types like
%"MSRTTITypeDescriptor\02". This name is undesirable because it
requires escaping; the underlying reason for this is that the name is
unprintable. Fix this by naming it %rtti.TypeDescriptor2.
While here, stop trying to do lookups in the LLVM Module's type table.
Instead, store the IR types in MicrosoftCXXABI. Lookups by name aren't
particularly fast.
llvm-svn: 212439
Alp Toker [Mon, 7 Jul 2014 07:47:20 +0000 (07:47 +0000)]
Peel away old-style file remapping typedefs and cruft
llvm-svn: 212438
Richard Smith [Mon, 7 Jul 2014 06:38:20 +0000 (06:38 +0000)]
Fix an iterator invalidation issue: deserializing a key function can write to
the key functions table. Don't hold references to anything within that table
across such an access.
llvm-svn: 212437
David Majnemer [Mon, 7 Jul 2014 06:20:50 +0000 (06:20 +0000)]
StaticAnalyzer: Silence a warning
ExprEngine wasn't ready for SEHLeaveStmtClass. Handle it like all the
other SEH constructs by aborting.
llvm-svn: 212436
David Majnemer [Mon, 7 Jul 2014 06:20:47 +0000 (06:20 +0000)]
CodeGen: Refactor RTTI emission
Let's not expose ABI specific minutia inside of CodeGenModule and Type.
Instead, let's abstract it through CXXABI.
This gets rid of:
CodeGenModule::getCompleteObjectLocator,
CodeGenModule::EmitFundamentalTypeDescriptor{s,},
CodeGenModule::getMSTypeDescriptor,
CodeGenModule::getMSCompleteObjectLocator,
CGCXXABI::shouldRTTIBeUnique,
CGCXXABI::classifyRTTIUniqueness.
CGRTTI was *almost* entirely centered around providing Itanium-style
RTTI information. Instead of providing interfaces that only it
consumes, move it to the ItaniumCXXABI implementation file. This allows
it to have access to Itanium-specific implementation details without
providing useless expansion points for the Microsoft ABI side.
Differential Revision: http://reviews.llvm.org/D4261
llvm-svn: 212435
Alp Toker [Mon, 7 Jul 2014 06:05:00 +0000 (06:05 +0000)]
Fix layering of file remapping and header search initialization
These two functions initialize the source manager and header search objects and
shouldn't be in InitPreprocessor which is concerned with priming the
preprocessor itself and predefining macros.
llvm-svn: 212434
Richard Smith [Mon, 7 Jul 2014 06:00:13 +0000 (06:00 +0000)]
Add an explicit diagnostic for the case where an expression is not a constant
expression because it uses 'this'. Inspired by PR20219 comment#2.
llvm-svn: 212433