Aaron Ballman [Tue, 22 Jul 2014 14:09:34 +0000 (14:09 +0000)]
Improve the checkUInt32Argument() helper function so that it diagnoses integer constants larger than 32-bits.
llvm-svn: 213658
Aaron Ballman [Tue, 22 Jul 2014 14:08:09 +0000 (14:08 +0000)]
Provide extra information in the "integer constant is too large" diagnostic. This will be used to improve other diagnostics.
llvm-svn: 213657
Timur Iskhodzhanov [Tue, 22 Jul 2014 14:02:53 +0000 (14:02 +0000)]
[ASan/Win] Add SEH handling to the DLL thunk as well
llvm-svn: 213656
Peter Zotov [Tue, 22 Jul 2014 13:55:20 +0000 (13:55 +0000)]
[OCaml] Don't truncate constants over 32 bits in Llvm.const_int.
llvm-svn: 213655
Timur Iskhodzhanov [Tue, 22 Jul 2014 13:44:18 +0000 (13:44 +0000)]
[ASan/Win] Handle SEH exceptions (best-effort, similar to longjmp)
llvm-svn: 213654
Sasa Stankovic [Tue, 22 Jul 2014 13:36:02 +0000 (13:36 +0000)]
[mips] Fix two patterns that select i32's (for MIPS32r6) / i64's (for MIPS64r6)
from setne comparison with an i32.
The patterns that are fixed:
* (select (i32 (setne i32, immZExt16)), i32, i32) (for MIPS32r6)
* (select (i32 (setne i32, immZExt16)), i64, i64) (for MIPS64r6)
llvm-svn: 213653
Aaron Ballman [Tue, 22 Jul 2014 13:13:31 +0000 (13:13 +0000)]
Adding a heading to the loop hint attributes so that attribute documentation can be generated again.
llvm-svn: 213652
Aaron Ballman [Tue, 22 Jul 2014 13:12:38 +0000 (13:12 +0000)]
Escaping an RST character to correct a Sphinx warning.
llvm-svn: 213651
Aaron Ballman [Tue, 22 Jul 2014 12:44:22 +0000 (12:44 +0000)]
Disallowing GNU-style attributes in new expressions, since they are prohibited by GCC as well.
llvm-svn: 213650
Timur Iskhodzhanov [Tue, 22 Jul 2014 12:37:51 +0000 (12:37 +0000)]
[ASan/Win] Add handling of C++ exceptions to the RTL
Also add a longjmp() test
llvm-svn: 213649
Alexey Bataev [Tue, 22 Jul 2014 12:35:18 +0000 (12:35 +0000)]
[OPENMP] Tests for nesting of regions for 'atomic' directive.
llvm-svn: 213648
Benjamin Kramer [Tue, 22 Jul 2014 12:30:35 +0000 (12:30 +0000)]
[clang-tidy] Add a check for RAII temporaries.
Summary:
This tries to find code similar that immediately destroys
an object that looks like it's trying to follow RAII.
{
scoped_lock(&global_mutex);
critical_section();
}
This checker will have false positives if someone uses this pattern
to legitimately invoke a destructor immediately (or the statement is
at the end of a scope anyway). To reduce the number we ignore this
pattern in macros (this is heavily used by gtest) and ignore objects
with no user-defined destructor.
Reviewers: alexfh, djasper
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4615
llvm-svn: 213647
Timur Iskhodzhanov [Tue, 22 Jul 2014 12:25:51 +0000 (12:25 +0000)]
[ASan] Simplify exception/longjmp tests even further
llvm-svn: 213646
Elena Demikhovsky [Tue, 22 Jul 2014 12:08:25 +0000 (12:08 +0000)]
AVX-512: I added new headers to makefiles. It should resolve tests fail.
If it will not, I'm reverting the both commits.
llvm-svn: 213645
Deepak Panickal [Tue, 22 Jul 2014 12:01:43 +0000 (12:01 +0000)]
Fix an issue where an entry point of 0x00 would cause LLDB to think that the ELF is not executable without checking for ET_EXEC
llvm-svn: 213644
Deepak Panickal [Tue, 22 Jul 2014 11:59:11 +0000 (11:59 +0000)]
Fix the warnings introduced
llvm-svn: 213643
Timur Iskhodzhanov [Tue, 22 Jul 2014 11:46:24 +0000 (11:46 +0000)]
[ASan] Split throw_catch tests into two files: throw/catch + longjmp
Also add some more assertions into these tests
llvm-svn: 213642
Elena Demikhovsky [Tue, 22 Jul 2014 11:31:39 +0000 (11:31 +0000)]
AVX-512: Added intrinsics to clang.
The set is small, that what I have right now.
Everybody is welcome to add more.
llvm-svn: 213641
Elena Demikhovsky [Tue, 22 Jul 2014 11:07:31 +0000 (11:07 +0000)]
AVX-512: Fixed intrinsic of VSQRTPS/PD instructions.
I set number and types of parameters according to GCC intrinsics.
llvm-svn: 213640
Alexey Bataev [Tue, 22 Jul 2014 10:10:35 +0000 (10:10 +0000)]
[OPENMP] Initial parsing and sema analysis for 'atomic' directive.
llvm-svn: 213639
Alexey Bataev [Tue, 22 Jul 2014 06:45:04 +0000 (06:45 +0000)]
[OPENMP] Initial parsing and sema analysis for 'ordered' directive.
llvm-svn: 213616
David Majnemer [Tue, 22 Jul 2014 06:07:09 +0000 (06:07 +0000)]
Fix std::make_heap's worst case time complexity
std::make_heap is currently implemented by iteratively applying a
siftup-type algorithm. Since sift-up is O(ln n), this gives
std::make_heap a worst case time complexity of O(n ln n).
The C++ standard mandates that std::make_heap make no more than O(3n)
comparisons, this makes our std::make_heap out of spec.
Fix this by introducing an implementation of __sift_down and switch
std::make_heap to create the heap using it.
This gives std::make_heap linear time complexity in the worst case.
This fixes PR20161.
llvm-svn: 213615
Sanjay Patel [Tue, 22 Jul 2014 04:57:06 +0000 (04:57 +0000)]
fixed typo in comment
llvm-svn: 213614
Richard Trieu [Tue, 22 Jul 2014 04:42:15 +0000 (04:42 +0000)]
Fix '&' printing for template arguments in parentheses in template diffing.
llvm-svn: 213613
Chandler Carruth [Tue, 22 Jul 2014 04:07:55 +0000 (04:07 +0000)]
[SDAG] Refactor the code for inserting a newly allocated SDNode into the
DAG into a helper function.
This adds a trip through the (very minimal) verification logic in
a bunch of places that were missing it, but shouldn't have any other
impact outside of refactoring. I'm hoping to use this to do more clever
things when DAG nodes are inserted into the graph.
llvm-svn: 213612
Richard Trieu [Tue, 22 Jul 2014 04:06:54 +0000 (04:06 +0000)]
More gracefully handle parentheses in templare arguments in template diffing.
llvm-svn: 213611
Chandler Carruth [Tue, 22 Jul 2014 04:03:22 +0000 (04:03 +0000)]
[SDAG] Remove a giant pile of asserts that may have helped track down
a bug in 2010 when they were added but are adding no value today.
In fact, they are utter lies. NodeAllocator is used to allocate almost
all of these node types. I don't know what we were trying to assert
here, and the docs don't give any answer. Until we once again stumble
upon a bug needing help, let's clear the path for improvements.
llvm-svn: 213610
Richard Trieu [Tue, 22 Jul 2014 03:33:01 +0000 (03:33 +0000)]
Fix a template diffing problem were an '&' is unexpectedly printed in
a template argument.
llvm-svn: 213609
Bill Wendling [Tue, 22 Jul 2014 03:17:30 +0000 (03:17 +0000)]
Add openmp to the list of tagged things.
llvm-svn: 213608
Richard Smith [Tue, 22 Jul 2014 02:32:12 +0000 (02:32 +0000)]
Revert of r213521. This change introduced a non-hermetic test (depending on a
file not in the test/ area). Backing out now so that this test isn't part of
the 3.5 branch.
Original commit message: "TableGen: Allow AddedComplexity values to be negative
[...]"
llvm-svn: 213596
Saleem Abdulrasool [Tue, 22 Jul 2014 02:01:04 +0000 (02:01 +0000)]
Sema: correct handling for __va_start for WoA
Windows ARM indicates __va_start as a variadic function. However, the function
itself is treated as having 4 formal arguments:
- (out) pointer to the va_list
- (in) address of the last named argument
- (in) slot size for the type of the last argument
- address of the last named argument
The last argument does not seem to have any bearing on codegen, and thus is not
explicitly type checked at this point.
Unlike the previous handling for __va_start, it does not currently validate if
the parameter is the last named parameter (it seems that MSVC currently accepts
this).
llvm-svn: 213595
Serge Pavlov [Tue, 22 Jul 2014 01:54:49 +0000 (01:54 +0000)]
Avoid crash if default argument parsed with errors.
If function parameters have default values, and that of the second
parameter is parsed with errors, function declaration would have
a parameter without default value that follows a parameter with
that. Such declaration breaks logic of selecting overloaded
function. As a solution, put opaque object as default value in such case.
This patch fixes PR20055.
Differential Revision: http://reviews.llvm.org/D4378
llvm-svn: 213594
Reid Kleckner [Tue, 22 Jul 2014 00:53:05 +0000 (00:53 +0000)]
-fms-extensions: Implement half of #pragma init_seg
Summary:
This pragma is very rare. We could *hypothetically* lower some uses of
it down to @llvm.global_ctors, but given that GlobalOpt isn't able to
optimize prioritized global ctors today, there's really no point.
If we wanted to do this in the future, I would check if the section used
in the pragma started with ".CRT$XC" and had up to two characters after
it. Those two characters could form the 16-bit initialization priority
that we support in @llvm.global_ctors. We would have to teach LLVM to
lower prioritized global ctors on COFF as well.
This should let us compile some silly uses of this pragma in WebKit /
Blink.
Reviewers: rsmith, majnemer
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4549
llvm-svn: 213593
Nick Kledzik [Tue, 22 Jul 2014 00:49:49 +0000 (00:49 +0000)]
[mach-o] Add test case for armv6 (arm not thumb) hello world
llvm-svn: 213592
Kate Stone [Tue, 22 Jul 2014 00:18:52 +0000 (00:18 +0000)]
Improve LLDB's embedded C++ demangler by addressing the following two issues:
1) Preserve ref qualification state in a local variable while parsing a nested name. Previously, the state was recorded in the shared db reference and could therefore be overwritten when parsing multiple levels of nested names (e.g.: when a qualified name has qualified template args.)
2) Address an off-by-one error when testing whether or not a thunk is non-virtual. This resulted in the demangled identifying all thunks as non-virtual.
llvm-svn: 213591
Alexey Samsonov [Tue, 22 Jul 2014 00:10:08 +0000 (00:10 +0000)]
[MSan] Fix strncpy interceptor
llvm-svn: 213590
Hans Wennborg [Mon, 21 Jul 2014 23:42:07 +0000 (23:42 +0000)]
clang-cl: ignore /showIncludes when combined with /E (PR20336)
Both /showIncludes and /E write to stdout. Allowing both results
in interleaved output and an error when double-closing the file
descriptor, intended to catch issues like this.
llvm-svn: 213589
Mark Heffernan [Mon, 21 Jul 2014 23:11:03 +0000 (23:11 +0000)]
Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave.
llvm-svn: 213588
Mark Heffernan [Mon, 21 Jul 2014 23:10:56 +0000 (23:10 +0000)]
Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave.
llvm-svn: 213587
Eli Bendersky [Mon, 21 Jul 2014 22:54:44 +0000 (22:54 +0000)]
Add some tests for NVPTX lowering of cmpxchg
llvm-svn: 213586
Nick Kledzik [Mon, 21 Jul 2014 22:06:57 +0000 (22:06 +0000)]
[mach-o] add support for old x86 __eh_frame sections
Over time the symbols and relocations have changed for dwarf unwind info
in the __eh_frame section. Add test cases for older and new style.
llvm-svn: 213585
Hans Wennborg [Mon, 21 Jul 2014 21:48:06 +0000 (21:48 +0000)]
clang-format vs plugin: set version number from cmake (PR20307)
Previously it was hard-coded to 1.0, which meant the installer would
not install the plugin over previous versions.
This commit makes us use LLVM's major.minor.patch version from cmake,
or whatever CLANG_FORMAT_VS_VERSION is set to when configuring the build.
It's pretty dirty to update a configuration file in the source directory
from the cmake build like this. However, the plugin build is already
dirty in this regard since it builds in the source dir when visual studio,
and then copies out the resulting vsix.
llvm-svn: 213584
Alexey Samsonov [Mon, 21 Jul 2014 21:33:46 +0000 (21:33 +0000)]
[ASan] Fix __asan_describe_address and add a test for it.
llvm-svn: 213583
Hal Finkel [Mon, 21 Jul 2014 21:30:22 +0000 (21:30 +0000)]
Match semantics of PointerMayBeCapturedBefore to its name by default
As it turns out, the capture tracker named CaptureBefore used by AA, and now
available via the PointerMayBeCapturedBefore function, would have been
more-aptly named CapturedBeforeOrAt, because it considers captures at the
instruction provided. This is not always what one wants, and it is difficult to
get the strictly-before behavior given only the current interface. This adds an
additional parameter which controls whether or not you want to include
captures at the provided instruction. The default is not to include the
instruction provided, so that 'Before' matches its name.
No functionality change intended.
llvm-svn: 213582
David Blaikie [Mon, 21 Jul 2014 20:45:59 +0000 (20:45 +0000)]
Revert "Recommit r212203: Don't try to construct debug LexicalScopes hierarchy for functions that do not have top level debug information."
This reverts commit r212649 while I investigate/reduce/etc PR20367.
llvm-svn: 213581
Tom Stellard [Mon, 21 Jul 2014 20:20:08 +0000 (20:20 +0000)]
test-release.sh: Add support for dot releases
llvm-svn: 213580
Arnaud A. de Grandmaison [Mon, 21 Jul 2014 19:47:02 +0000 (19:47 +0000)]
Revert "Emit lifetime.start / lifetime.end markers for unnamed temporary objects."
This commit did break the sanitizer-x86 bot. Revert it while
investigating.
llvm-svn: 213579
Mark Heffernan [Mon, 21 Jul 2014 19:06:29 +0000 (19:06 +0000)]
Fix build breakage caused by use of std::to_string(int). Replace with raw_string_ostream.
llvm-svn: 213578
Alexey Samsonov [Mon, 21 Jul 2014 19:01:03 +0000 (19:01 +0000)]
Adjust gen_dynamic_list for PowerPC function descriptors
llvm-svn: 213577
Arnaud A. de Grandmaison [Mon, 21 Jul 2014 18:54:21 +0000 (18:54 +0000)]
Emit lifetime.start / lifetime.end markers for unnamed temporary objects.
This will give more information to the optimizers so that they can reuse stack slots.
llvm-svn: 213576
Saleem Abdulrasool [Mon, 21 Jul 2014 18:18:52 +0000 (18:18 +0000)]
build: silence GCC warning on Linux
LLDWrapPython.cpp is a generated file. This contains a double assignment to the
same value, which causes GCC to emit a warning about sequence point evaluation
causing a use-before-init. Simply silence the warning.
llvm-svn: 213575
Mark Heffernan [Mon, 21 Jul 2014 18:08:34 +0000 (18:08 +0000)]
Add support for '#pragma unroll'.
llvm-svn: 213574
Justin Bogner [Mon, 21 Jul 2014 18:01:53 +0000 (18:01 +0000)]
Sema: Handle C11 atomics when diagnosing out of range comparisons
This fixes a couple of asserts when analyzing comparisons involving
C11 atomics that were uncovered by r205608 when we extended the
applicability of -Wtautological-constant-out-of-range-compare.
llvm-svn: 213573
Saleem Abdulrasool [Mon, 21 Jul 2014 17:52:00 +0000 (17:52 +0000)]
R600: silence GCC warning
GCC believes it may be possible to not return a value from the switch:
lib/Target/R600/SIRegisterInfo.cpp:187:1: warning: control reaches end of non-void function [-Wreturn-type]
Add an unreachable label to indicate that this is not possible and still permit
switch coverage checking.
llvm-svn: 213572
Tom Stellard [Mon, 21 Jul 2014 17:44:29 +0000 (17:44 +0000)]
R600/SI: Refactor VOP3 instruction definitions
llvm-svn: 213571
Tom Stellard [Mon, 21 Jul 2014 17:44:28 +0000 (17:44 +0000)]
R600/SI: Separate encoding and operand definitions into their own classes
llvm-svn: 213570
Logan Chien [Mon, 21 Jul 2014 17:33:44 +0000 (17:33 +0000)]
Replace the result usages while legalizing cmpxchg.
We should update the usages to all of the results;
otherwise, we might get assertion failure or SEGV during
the type legalization of ATOMIC_CMP_SWAP_WITH_SUCCESS
with two or more illegal types.
For example, in the following sequence, both i8 and i1
might be illegal in some target, e.g. armv5, mipsel, mips64el,
%0 = cmpxchg i8* %ptr, i8 %desire, i8 %new monotonic monotonic
%1 = extractvalue { i8, i1 } %0, 1
Since both i8 and i1 should be legalized, the corresponding
ATOMIC_CMP_SWAP_WITH_SUCCESS dag will be checked/replaced/updated
twice.
If we don't update the usage to *ALL* of the results in the
first round, the DAG for extractvalue might be processed earlier.
The GetPromotedInteger() will result in assertion failure,
because its operand (i.e. the success bit of cmpxchg) is not
promoted beforehand.
llvm-svn: 213569
Deepak Panickal [Mon, 21 Jul 2014 17:24:05 +0000 (17:24 +0000)]
Update CMakeLists.txt and Makefiles for building/linking the Hexagon ABI and Dynamic Loader
llvm-svn: 213568
Deepak Panickal [Mon, 21 Jul 2014 17:22:12 +0000 (17:22 +0000)]
Add the Hexagon DSP breakpoint opcode to PlatformWindows and PlatformLinux
llvm-svn: 213567
Deepak Panickal [Mon, 21 Jul 2014 17:21:01 +0000 (17:21 +0000)]
ABI for the Hexagon DSP
llvm-svn: 213566
Deepak Panickal [Mon, 21 Jul 2014 17:19:12 +0000 (17:19 +0000)]
Dynamic loader for the Hexagon DSP
llvm-svn: 213565
Tom Stellard [Mon, 21 Jul 2014 17:12:40 +0000 (17:12 +0000)]
R600/SI: Initailize encoding fields of unused VOP3 modifiers to 0
llvm-svn: 213564
Tom Stellard [Mon, 21 Jul 2014 17:12:37 +0000 (17:12 +0000)]
R600/SI: Initialize unused VOP3 sources to 0 instead of SIOperand.ZERO
llvm-svn: 213563
Duncan P. N. Exon Smith [Mon, 21 Jul 2014 17:06:51 +0000 (17:06 +0000)]
Revert "[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges."
This reverts commit r213474 (and r213475), which causes a miscompile on
a stage2 LTO build. I'll reply on the list in a moment.
llvm-svn: 213562
Tom Stellard [Mon, 21 Jul 2014 16:55:33 +0000 (16:55 +0000)]
R600/SI: Add instruction shrinking pass
This pass converts 64-bit instructions to 32-bit when possible.
llvm-svn: 213561
David Blaikie [Mon, 21 Jul 2014 16:46:14 +0000 (16:46 +0000)]
Fix lld build for llvm API changes committed in r213557
llvm-svn: 213560
Dan Liew [Mon, 21 Jul 2014 16:39:00 +0000 (16:39 +0000)]
Fix Sphinx warnings.
llvm-svn: 213559
Tom Stellard [Mon, 21 Jul 2014 16:27:24 +0000 (16:27 +0000)]
R600/SI: VOPC instructions explicitly define VCC
Therefore we don't need to add it to the implict defs list.
llvm-svn: 213558
David Blaikie [Mon, 21 Jul 2014 16:26:24 +0000 (16:26 +0000)]
Correct the ownership passing semantics of object::createBinary and make them explicit in the type system.
createBinary documented that it destroyed the parameter in error cases,
though by observation it does not. By passing the unique_ptr by value
rather than lvalue reference, callers are now explicit about passing
ownership and the function implements the documented contract. Remove
the explicit documentation, since now the behavior cannot be anything
other than what was documented, so it's redundant.
Also drops a unique_ptr::release in llvm-nm that was always run on a
null unique_ptr anyway.
llvm-svn: 213557
David Blaikie [Mon, 21 Jul 2014 16:23:21 +0000 (16:23 +0000)]
Remove unnecessary use of unique_ptr::release() used to construct another unique_ptr.
llvm-svn: 213556
Zachary Turner [Mon, 21 Jul 2014 16:16:31 +0000 (16:16 +0000)]
Rename dosep.ty to dosep.py
llvm-svn: 213555
David Blaikie [Mon, 21 Jul 2014 16:13:24 +0000 (16:13 +0000)]
Remove unused variable.
llvm-svn: 213554
Zachary Turner [Mon, 21 Jul 2014 16:10:20 +0000 (16:10 +0000)]
Remove spurious debugging message from CMake.
llvm-svn: 213553
Tom Stellard [Mon, 21 Jul 2014 15:45:06 +0000 (15:45 +0000)]
R600/SI: Clean up some of the unused REGISTER_{LOAD,STORE} code
There are a few more cleanups to do, but I ran into some problems
with ext loads and trunc stores, when I tried to change some of the
vector loads and stores from custom to legal, so I wasn't able to
get rid of everything.
llvm-svn: 213552
Tom Stellard [Mon, 21 Jul 2014 15:45:01 +0000 (15:45 +0000)]
R600/SI: Use scratch memory for large private arrays
llvm-svn: 213551
Tom Stellard [Mon, 21 Jul 2014 15:44:58 +0000 (15:44 +0000)]
R600/SI: Specify wavefront size for SI and CI
llvm-svn: 213550
Tom Stellard [Mon, 21 Jul 2014 15:44:55 +0000 (15:44 +0000)]
R600/SI: Remove vaddr operand from BUFFER_LOAD_*_OFFSET instructions
This operand is never used.
llvm-svn: 213549
Daniel Sanders [Mon, 21 Jul 2014 15:25:24 +0000 (15:25 +0000)]
[mips] Do not emit '.module fp=...' unless we really need to.
We now emit this value when we need to contradict the default value. This
restores support for binutils 2.24.
When a suitable binutils has been released we can resume unconditionally
emitting .module directives. This is preferable to omitting the .module
directives since the .module directives protect against, for example,
accidentally assembling FP32 code with -mfp64 and producing an unusuable object.
llvm-svn: 213548
Marshall Clow [Mon, 21 Jul 2014 15:15:15 +0000 (15:15 +0000)]
make the same change as in 213546 for vector<bool>
llvm-svn: 213547
Marshall Clow [Mon, 21 Jul 2014 15:11:13 +0000 (15:11 +0000)]
In response to bug #20362, change the order of operations in vector move assignment so that if the allocator move assignment throws, we aren't left with two objects pointing at the same memory. This is not a complete fix; I am unconvinced that a complete fix is possible. With this change in place, we will leak the old contents of the vector. LWG issue #2106, when adopted, will make this problem illegal. Thanks to Thomas Koeppe for the report and analysis.
llvm-svn: 213546
Robert Khasanov [Mon, 21 Jul 2014 14:54:21 +0000 (14:54 +0000)]
[SKX] Enabling SKX target and AVX512BW, AVX512DQ, AVX512VL features.
Enabling HasAVX512{DQ,BW,VL} predicates.
Adding VK2, VK4, VK32, VK64 masked register classes.
Adding new types (v64i8, v32i16) to VR512.
Extending calling conventions for new types (v64i8, v32i16)
Patch by Zinovy Nis <zinovy.y.nis@intel.com>
Reviewed by Elena Demikhovsky <elena.demikhovsky@intel.com>
llvm-svn: 213545
Tom Stellard [Mon, 21 Jul 2014 14:28:31 +0000 (14:28 +0000)]
docs: Update relaease documents to include the patch number in the RELEASE tags
This will make it easier to update the release scripts to support
bug-fix releases.
llvm-svn: 213544
Dan Liew [Mon, 21 Jul 2014 14:17:15 +0000 (14:17 +0000)]
Export LLVM_ENABLE_ASSERTIONS in LLVMConfig.cmake so clients know
if the version of LLVM they are trying to use was built with or
without assertions.
llvm-svn: 213532
Tom Stellard [Mon, 21 Jul 2014 14:01:14 +0000 (14:01 +0000)]
R600/SI: Store constant initializer data in constant memory
This implements a solution for constant initializers suggested
by Vadim Girlin, where we store the data after the shader code
and then use the S_GETPC instruction to compute its address.
This saves use the trouble of creating a new buffer for constant data
and then having to pass the pointer to the kernel via user SGPRs or the
input buffer.
llvm-svn: 213530
Tom Stellard [Mon, 21 Jul 2014 14:01:12 +0000 (14:01 +0000)]
R600/SI: Add isCFDepth0 Predicate to SALU addc pattern
llvm-svn: 213529
Tom Stellard [Mon, 21 Jul 2014 14:01:10 +0000 (14:01 +0000)]
R600/SI: Use VALU for i1 XOR
llvm-svn: 213528
Tom Stellard [Mon, 21 Jul 2014 14:01:08 +0000 (14:01 +0000)]
R600/SI: Use a custom encoding method for simm16 in SOPP branch instructions
This allows us to explicitly define the type of fixup that is needed,
so we can distinguish this from future fixup types.
llvm-svn: 213527
Tom Stellard [Mon, 21 Jul 2014 14:01:05 +0000 (14:01 +0000)]
R600/SI: Rename SOPP operands to match the encoding fields
llvm-svn: 213526
Alexander Potapenko [Mon, 21 Jul 2014 13:35:09 +0000 (13:35 +0000)]
[lsan] Allow using ucontext.h in the test on OSX.
llvm-svn: 213523
Daniel Sanders [Mon, 21 Jul 2014 13:30:55 +0000 (13:30 +0000)]
[mips] Add MipsOptionRecord abstraction and use it to implement .reginfo/.MIPS.options
This abstraction allows us to support the various records that can be placed in
the .MIPS.options section in the future. We currently use it to record register
usage information (the ODK_REGINFO record in our ELF64 spec).
Each .MIPS.options record should subclass MipsOptionRecord and provide an
implementation of EmitMipsOptionRecord.
Patch by Matheus Almeida and Toma Tabacu
llvm-svn: 213522
Tom Stellard [Mon, 21 Jul 2014 13:28:54 +0000 (13:28 +0000)]
TableGen: Allow AddedComplexity values to be negative
This is useful for cases when stand-alone patterns are preferred to the
patterns included in the instruction definitions. Instead of requiring
that stand-alone patterns set a larger AddedComplexity value, which
can be confusing to new developers, the allows us to reduce the
complexity of the included patterns to achieve the same result.
llvm-svn: 213521
Simon Atanasyan [Mon, 21 Jul 2014 13:16:53 +0000 (13:16 +0000)]
[Mips] Fix typo in the comment.
llvm-svn: 213520
Hal Finkel [Mon, 21 Jul 2014 13:15:48 +0000 (13:15 +0000)]
Move the CapturesBefore tracker from AA into CaptureTracking
There were two generally-useful CaptureTracker classes defined in LLVM: the
simple tracker defined in CaptureTracking (and made available via the
PointerMayBeCaptured utility function), and the CapturesBefore tracker
available only inside of AA. This change moves the CapturesBefore tracker into
CaptureTracking, generalizes it slightly (by adding a ReturnCaptures
parameter), and makes it generally available via a PointerMayBeCapturedBefore
utility function.
This logic will be needed, for example, to perform noalias function parameter
attribute inference.
No functionality change intended.
llvm-svn: 213519
Alexander Potapenko [Mon, 21 Jul 2014 13:12:44 +0000 (13:12 +0000)]
[lsan] Define MAP_ANONYMOUS as MAP_ANON for OSX in the test.
llvm-svn: 213518
Aaron Ballman [Mon, 21 Jul 2014 13:08:08 +0000 (13:08 +0000)]
This declaration has no definition, which is causing MSVC to emit several "no suitable definition provided for explicit template instantiation request" C4661 warnings.
llvm-svn: 213517
Alexander Potapenko [Mon, 21 Jul 2014 13:01:06 +0000 (13:01 +0000)]
[lsan] Use a more standard-conformant sched_yield() instead of pthread_yield().
There's no pthread_yield() on OSX (only sched_yield() and pthread_yield_np()).
llvm-svn: 213516
Aaron Ballman [Mon, 21 Jul 2014 12:31:43 +0000 (12:31 +0000)]
Fixing an MSVC conversion warning about implicitly converting the shift results to 64-bits. No functional change intended.
llvm-svn: 213515
Hal Finkel [Mon, 21 Jul 2014 12:27:23 +0000 (12:27 +0000)]
Move isIdentifiedFunctionLocal from BasicAA to AA
The ability to identify function locals will exist outside of BasicAA (for
example, logic for inferring noalias function arguments will need this), so
make this concept generally accessible without code duplication.
No functionality change.
llvm-svn: 213514
Daniel Sanders [Mon, 21 Jul 2014 12:25:34 +0000 (12:25 +0000)]
[mips] Try to fix the test/ExecutionEngine tests on a MIPS host.
Fix a dangerous default case that caused MipsCodeEmitter to discard pseudo
instructions it didn't recognize. It will now call llvm_unreachable() for
unrecognized pseudo's and explicitly handles PseudoReturn, PseudoReturn64,
PseudoIndirectBranch, PseudoIndirectBranch64, CFI_INSTRUCTION, IMPLICIT_DEF,
and KILL.
There may be other pseudos that need handling but this was enough for the
ExecutionEngine tests to pass on my test system.
llvm-svn: 213513
Alexey Bataev [Mon, 21 Jul 2014 11:26:11 +0000 (11:26 +0000)]
[OPENMP] Initial parsing and sema analysis for 'flush' directive.
llvm-svn: 213512