Justin Bogner [Tue, 14 Jul 2015 22:36:22 +0000 (22:36 +0000)]
Driver: Delete dead code
VerifyJobActions never have multiple inputs.
llvm-svn: 242223
Hans Wennborg [Tue, 14 Jul 2015 22:35:57 +0000 (22:35 +0000)]
Update the trunk version to 3.8.0svn.
llvm-svn: 242222
NAKAMURA Takumi [Tue, 14 Jul 2015 22:35:36 +0000 (22:35 +0000)]
Sema.h: Just prune a redundant \brief introduced in r242133, for now. [-Wdocumentation]
llvm-svn: 242221
Adam Nemet [Tue, 14 Jul 2015 22:32:52 +0000 (22:32 +0000)]
[LAA] Turn RuntimePointerChecking into a class, start hiding things, NFC
The goal is to start hiding internal APIs.
llvm-svn: 242220
Adam Nemet [Tue, 14 Jul 2015 22:32:50 +0000 (22:32 +0000)]
[LAA] Introduce RuntimePointerChecking::PointerInfo, NFC
Turn this structure-of-arrays (i.e. the various pointer attributes) into
array-of-structures.
llvm-svn: 242219
Adam Nemet [Tue, 14 Jul 2015 22:32:44 +0000 (22:32 +0000)]
[LAA] Lift RuntimePointerCheck out of LoopAccessInfo, NFC
I am planning to add more nested classes inside RuntimePointerCheck so
all these triple-nesting would be hard to follow.
Also rename it to RuntimePointerChecking (i.e. append 'ing').
llvm-svn: 242218
Hal Finkel [Tue, 14 Jul 2015 22:26:06 +0000 (22:26 +0000)]
[PowerPC] Use the ABI indirect-call protocol for patchpoints
We used to take the address specified as the direct target of the patchpoint
and did no TOC-pointer handling. This, however, as not all that useful,
because MCJIT tends to create a lot of modules, and they have their own TOC
sections. Thus, to call from the generated code to other generated code, you
really need to switch TOC pointers. Make this work as expected, and under
ELFv1, tread the address as the function descriptor address so that the correct
TOC pointer can be loaded.
llvm-svn: 242217
Rafael Espindola [Tue, 14 Jul 2015 22:19:09 +0000 (22:19 +0000)]
Update for llvm api change.
llvm-svn: 242216
Rafael Espindola [Tue, 14 Jul 2015 22:18:43 +0000 (22:18 +0000)]
Add support for reading members out of thin archives.
For now the Archive owns the buffers of the thin archive members.
This makes for a simple API, but all the buffers are destructed
only when the archive is destructed. This should be fine since we
close the files after mmap so we should not hit an open file
limit.
llvm-svn: 242215
Dawn Perchik [Tue, 14 Jul 2015 22:12:43 +0000 (22:12 +0000)]
Cleanup; remove trailing spaces.
llvm-svn: 242214
Lang Hames [Tue, 14 Jul 2015 22:11:10 +0000 (22:11 +0000)]
[ExecutionEngine] Re-apply r241962 with fixes for ARM.
Patch by Pierre-Andre Saulais. Thanks Pierre-Andre!
llvm-svn: 242213
Pete Cooper [Tue, 14 Jul 2015 22:10:54 +0000 (22:10 +0000)]
Add allnodes() iterator range to SelectionDAG. NFC.
SelectionDAG already had begin/end methods for iterating over all
the nodes, but didn't define an iterator_range for us in foreach
loops.
This adds such a method and uses it in some of the eligible places
throughout the backends.
llvm-svn: 242212
Pete Cooper [Tue, 14 Jul 2015 21:54:55 +0000 (21:54 +0000)]
Move SDNode::IROrder in to padding to save space. NFC.
There was a 32-bit padding gap between 'unsigned short NumOperands, NumValues;' and 'DebugLoc debugLoc. Move 'unsigned IROrder' in to that gap.
This trims the size of SDNode's from 76 bytes (really 80 due to alignment) to 72 bytes.
llvm-svn: 242211
Pete Cooper [Tue, 14 Jul 2015 21:54:52 +0000 (21:54 +0000)]
Constify parameters in SelectionDAG methods. NFC
llvm-svn: 242210
Pete Cooper [Tue, 14 Jul 2015 21:54:48 +0000 (21:54 +0000)]
Remove unnecessary .getNode() in SelectionDAG. NFC.
The simplify_type specialisation allows us to cast directly from
SDValue to an SDNode* subclass so we don't need to pass a SDNode*
to cast<>.
llvm-svn: 242209
Pete Cooper [Tue, 14 Jul 2015 21:54:45 +0000 (21:54 +0000)]
Use more foreach loops in SelectionDAG. NFC
llvm-svn: 242208
Rafael Espindola [Tue, 14 Jul 2015 21:28:07 +0000 (21:28 +0000)]
Use getChildOffset instead of getBuffer for identifying a member.
I am adding support for thin archives. On those, getting the buffer
involves reading another file.
Since we only need an id in here, use the member offset in the archive.
llvm-svn: 242205
Alex Lorenz [Tue, 14 Jul 2015 21:24:41 +0000 (21:24 +0000)]
MIR Serialization: Serialize the machine basic block live in registers.
llvm-svn: 242204
Alex Lorenz [Tue, 14 Jul 2015 21:18:25 +0000 (21:18 +0000)]
MIR Printer: move the function 'printReg'. NFC.
This commit moves the function 'printReg' towards the start of the file so that
it can be used by the conversion methods in MIRPrinter and not just the printing
methods in MIPrinter.
llvm-svn: 242203
Tim Northover [Tue, 14 Jul 2015 21:14:58 +0000 (21:14 +0000)]
GVN: use a static array instead of regenerating it each time. NFC.
llvm-svn: 242202
JF Bastien [Tue, 14 Jul 2015 21:13:29 +0000 (21:13 +0000)]
WebAssembly: add basic int/fp instruction codegen.
Summary: This patch has the most basic instruction codegen for 32 and 64 bit int/fp.
Reviewers: sunfish
Subscribers: llvm-commits, jfb
Differential Revision: http://reviews.llvm.org/D11193
llvm-svn: 242201
Krzysztof Parzyszek [Tue, 14 Jul 2015 21:03:24 +0000 (21:03 +0000)]
Fix NDEBUG build warning
llvm-svn: 242200
Tim Northover [Tue, 14 Jul 2015 21:03:18 +0000 (21:03 +0000)]
GVN: tolerate an instruction being replaced without existing in the leaderboard
Sometimes an incidentally created instruction can duplicate a Value used
elsewhere. It then often doesn't end up in the leader table. If it's later
removed, we attempt to remove it from the leader table and segfault.
Instead we should just ignore the removal request, which won't cause any
problems. The reverse situation, where the original instruction is replaced by
the new one (which you might think could leave the leader table empty) cannot
occur, because the incidental instruction will never be found in the first
place.
llvm-svn: 242199
Paul Robinson [Tue, 14 Jul 2015 20:52:32 +0000 (20:52 +0000)]
Add a "maximum TLS alignment" characteristic to the target info, so it
can be different from the normal variable maximum.
Add an error diagnostic for when TLS variables exceed maximum TLS alignment.
Currenty only PS4 sets an explicit maximum TLS alignment.
Patch by Charles Li!
llvm-svn: 242198
Eric Fiselier [Tue, 14 Jul 2015 20:45:48 +0000 (20:45 +0000)]
Remove non-ascii characters
llvm-svn: 242197
Keno Fischer [Tue, 14 Jul 2015 20:25:19 +0000 (20:25 +0000)]
[Makefiles] Align library names with CMake build
Summary: This aligns the library names used by the Makefile build to be the same as those create by the CMake build to make switching between the two easier. The only major difficulty was lldbHost which was one library in the CMake system and several in the Makefile system. Most of the other changes are trivial renames.
Reviewers: labath
Subscribers: emaste, tberghammer, lldb-commits
Differential Revision: http://reviews.llvm.org/D11154
llvm-svn: 242196
Eric Fiselier [Tue, 14 Jul 2015 20:16:15 +0000 (20:16 +0000)]
Implement n4169 - Add invoke function template
llvm-svn: 242195
Hans Wennborg [Tue, 14 Jul 2015 20:15:15 +0000 (20:15 +0000)]
test-release.sh: Remove the InstallDir parameter from configure_llvmCore
After r242187, it's never set.
llvm-svn: 242194
Alexey Samsonov [Tue, 14 Jul 2015 20:13:42 +0000 (20:13 +0000)]
[Sanitizer] Fix fopencookie() interceptor to work with null hook functions.
llvm-svn: 242193
Krzysztof Parzyszek [Tue, 14 Jul 2015 20:11:28 +0000 (20:11 +0000)]
Fix Windows build: replace __func__ with LLVM_FUNCTION_NAME
llvm-svn: 242192
Bruno Cardoso Lopes [Tue, 14 Jul 2015 20:09:34 +0000 (20:09 +0000)]
[MMX] Use the appropriate instructions for GR64 <-> VR64 copies.
MOVSDto64rr and MOV64toSDrr are defined to convert between FR64 (%xmm)
<-> GR64 registers, not VR64 (%mm) <-> GR64. This is wrong.
I found this by inspection and could not find a suitable testcase for it
since (1) we don't handle MMX bitcasts in Peephole optimizer as to
generate COPYs that (2) could be expanded back to the appropriate x86
instruction in ExpandPostRA.
Switch to use the appropriate instructions: MMX_MOVD64from64rr and
MMX_MOVD64to64rr here.
llvm-svn: 242191
David Majnemer [Tue, 14 Jul 2015 20:08:49 +0000 (20:08 +0000)]
[Sema] Emit a better diagnostic when variable redeclarations disagree
We referred to all declaration in definitions in our diagnostic messages
which is can be inaccurate. Instead, classify the declaration and emit
an appropriate diagnostic for the new declaration and an appropriate
note pointing to the old one.
This fixes PR24116.
llvm-svn: 242190
Marshall Clow [Tue, 14 Jul 2015 20:07:45 +0000 (20:07 +0000)]
Mark LWG2308 as complete; fix link. No code change necessary.
llvm-svn: 242189
Hal Finkel [Tue, 14 Jul 2015 20:02:02 +0000 (20:02 +0000)]
[PowerPC] Fix the PPCInstrInfo::getInstrLatency implementation
PowerPC uses itineraries to describe processor pipelines (and dispatch-group
restrictions for P7/P8 cores). Unfortunately, the target-independent
implementation of TII.getInstrLatency calls ItinData->getStageLatency, and that
looks for the largest cycle count in the pipeline for any given instruction.
This, however, yields the wrong answer for the PPC itineraries, because we
don't encode the full pipeline. Because the functional units are fully
pipelined, we only model the initial stages (there are no relevant hazards in
the later stages to model), and so the technique employed by getStageLatency
does not really work. Instead, we should take the maximum output operand
latency, and that's what PPCInstrInfo::getInstrLatency now does.
This caused some test-case churn, including two unfortunate side effects.
First, the new arrangement of copies we get from function parameters now
sometimes blocks VSX FMA mutation (a FIXME has been added to the code and the
test cases), and we have one significant test-suite regression:
SingleSource/Benchmarks/BenchmarkGame/spectral-norm
56.4185% +/- 18.9398%
In this benchmark we have a loop with a vectorized FP divide, and it with the
new scheduling both divides end up in the same dispatch group (which in this
case seems to cause a problem, although why is not exactly clear). The grouping
structure is hard to predict from the bottom of the loop, and there may not be
much we can do to fix this.
Very few other test-suite performance effects were really significant, but
almost all weakly favor this change. However, in light of the issues
highlighted above, I've left the old behavior available via a
command-line flag.
llvm-svn: 242188
Dan Liew [Tue, 14 Jul 2015 19:46:19 +0000 (19:46 +0000)]
Fix several issues with the test-release.sh script
* Use the default install prefix (/usr/local) and use DESTDIR instead to
set a temporary install location for tarballing. This is the correct
way to package binary releases (otherwise the temporary install path
ends up in files in the binary release).
* Remove ``-disable-clang`` option. It did not work correctly
(tarballing assumed phase 3 was run) and when doing a release
we should always be doing a three-phased build and test.
Note: Technically we should only be using DESTDIR for the third phase
and use --prefix for the first and second phase because we run the built
clang from phase 1 and 2 (and in general an application's behaviour
may depend on the install prefix). However in the case of clang it
seems to not care what the install prefix was so to simplify the script
we use DESTDIR for all three stages.
llvm-svn: 242187
Krzysztof Parzyszek [Tue, 14 Jul 2015 19:30:21 +0000 (19:30 +0000)]
[Hexagon] Generate instructions for operations on predicate registers
Convert logical operations on general-purpose registers to the correspon-
ding operations on predicate registers.
llvm-svn: 242186
Keno Fischer [Tue, 14 Jul 2015 19:22:51 +0000 (19:22 +0000)]
[CodeGen] Force emission of personality directive if explicitly specified
Summary:
Before this change, personality directives were not emitted
if there was no invoke left in the function (of course until
recently this also meant that we couldn't know what
the personality actually was). This patch forces personality directives
to still be emitted, unless it is known to be a noop in the absence of
invokes, or the user explicitly specified `nounwind` (and not
`uwtable`) on the function.
Reviewers: majnemer, rnk
Subscribers: rnk, llvm-commits
Differential Revision: http://reviews.llvm.org/D10884
llvm-svn: 242185
Jason Molenda [Tue, 14 Jul 2015 19:19:07 +0000 (19:19 +0000)]
Add comment explaning sanity check on packet size in the packet decompression method.
llvm-svn: 242184
Oleksiy Vyalov [Tue, 14 Jul 2015 18:59:32 +0000 (18:59 +0000)]
Use target.exec-search-paths setting when resolving executable path for remote target.
http://reviews.llvm.org/D11163
llvm-svn: 242183
Oleksiy Vyalov [Tue, 14 Jul 2015 18:54:52 +0000 (18:54 +0000)]
Fix temp port file path generation in lldb-platform.
http://reviews.llvm.org/D11152
llvm-svn: 242182
Artem Belevich [Tue, 14 Jul 2015 18:49:17 +0000 (18:49 +0000)]
Run cuda options test only with specific target.
For now it's only x86_64-linux-gnu.
llvm-svn: 242181
Richard Smith [Tue, 14 Jul 2015 18:42:41 +0000 (18:42 +0000)]
[modules] Avoid repeatedly hashing the same name when looking it up in multiple module files.
llvm-svn: 242180
Richard Smith [Tue, 14 Jul 2015 18:40:59 +0000 (18:40 +0000)]
Add support for on-disk hash table lookup with a known hash, for situations where the same key will be looked up in multiple tables.
llvm-svn: 242179
Yaron Keren [Tue, 14 Jul 2015 18:33:55 +0000 (18:33 +0000)]
Teach config.guess that MSYS exists.
We might not want to upgrade config.guess to the current
version due to the license change from GPL2 to GPL3.
llvm-svn: 242178
Matt Arsenault [Tue, 14 Jul 2015 18:20:33 +0000 (18:20 +0000)]
AMDGPU: Avoid using 64-bit shift for i64 (shl x, 32)
This can be done only with moves which theoretically
will optimize better later.
Although this transform increases the instruction count,
it should be code size / cycle count neutral in the worst
VALU case. It also seems to slightly improve a couple
of testcases due to other DAG combines this exposes.
This is probably slightly worse for the SALU case, so
it might be better to handle this during moveToVALU,
although then you lose some simplifications like
the load width reducing in the simple testcase.
llvm-svn: 242177
Reid Kleckner [Tue, 14 Jul 2015 18:16:48 +0000 (18:16 +0000)]
[clang-cl] Disable C++ exceptions a different way
Rather than making -fexceptions a core option that enables C++ EH in
clang-cl, users can use the '-Xclang -fexceptions -Xclang
-fcxx-exceptions' flag set. We weren't going to expose -fexceptions in
clang-cl in the long run, so this way we don't add and then remove a
flag.
llvm-svn: 242176
Sunil Srivastava [Tue, 14 Jul 2015 18:08:50 +0000 (18:08 +0000)]
Fixed 22941: Integer template parameter as immediate 'I' expectes an integer constant
Basically fixed premature testing of integer constraints during template parsing
Reviewed at http://reviews.llvm.org/D10452
llvm-svn: 242175
Matt Arsenault [Tue, 14 Jul 2015 17:57:36 +0000 (17:57 +0000)]
AMDGPU/SI: Fix read2 merging into a super register.
If the read2 produced was supposed to be writing into a
super register, it would use the wrong subregister indices.
Fix this by inserting copies, so we only ever write to a vreg_64.
Run the register coalescer again to clean this up, although this
isn't ideal and often does result in an extra move.
Also remove the assert that offset1 > offset0.
There isn't a real reason to not allow this other than a minor
convenience in the compiler, and it doesn't seem worth the effort
of avoiding it.
llvm-svn: 242174
Matthias Braun [Tue, 14 Jul 2015 17:52:07 +0000 (17:52 +0000)]
MachineRegisterInfo: Remove UsedPhysReg infrastructure
We have a detailed def/use lists for every physical register in
MachineRegisterInfo anyway, so there is little use in maintaining an
additional bitset of which ones are used.
Removing it frees us from extra book keeping. This simplifies
VirtRegMap.
Differential Revision: http://reviews.llvm.org/D10911
llvm-svn: 242173
Eric Fiselier [Tue, 14 Jul 2015 17:50:27 +0000 (17:50 +0000)]
Fix PR24114 - std::atomic for non-Clang is not a literal type
Add _LIBCPP_CONSTEXPR to the implementation of __gcc_atomic_t.
llvm-svn: 242172
Nemanja Ivanovic [Tue, 14 Jul 2015 17:50:27 +0000 (17:50 +0000)]
Add missing builtins to altivec.h for ABI compliance (vol. 4)
This patch corresponds to review:
http://reviews.llvm.org/D11184
A number of new interfaces for altivec.h (as mandated by the ABI):
vector float vec_cpsgn(vector float, vector float)
vector double vec_cpsgn(vector double, vector double)
vector double vec_or(vector bool long long, vector double)
vector double vec_or(vector double, vector bool long long)
vector double vec_re(vector double)
vector signed char vec_cntlz(vector signed char)
vector unsigned char vec_cntlz(vector unsigned char)
vector short vec_cntlz(vector short)
vector unsigned short vec_cntlz(vector unsigned short)
vector int vec_cntlz(vector int)
vector unsigned int vec_cntlz(vector unsigned int)
vector signed long long vec_cntlz(vector signed long long)
vector unsigned long long vec_cntlz(vector unsigned long long)
vector signed char vec_nand(vector bool signed char, vector signed char)
vector signed char vec_nand(vector signed char, vector bool signed char)
vector signed char vec_nand(vector signed char, vector signed char)
vector unsigned char vec_nand(vector bool unsigned char, vector unsigned char)
vector unsigned char vec_nand(vector unsigned char, vector bool unsigned char)
vector unsigned char vec_nand(vector unsigned char, vector unsigned char)
vector short vec_nand(vector bool short, vector short)
vector short vec_nand(vector short, vector bool short)
vector short vec_nand(vector short, vector short)
vector unsigned short vec_nand(vector bool unsigned short, vector unsigned short)
vector unsigned short vec_nand(vector unsigned short, vector bool unsigned short)
vector unsigned short vec_nand(vector unsigned short, vector unsigned short)
vector int vec_nand(vector bool int, vector int)
vector int vec_nand(vector int, vector bool int)
vector int vec_nand(vector int, vector int)
vector unsigned int vec_nand(vector bool unsigned int, vector unsigned int)
vector unsigned int vec_nand(vector unsigned int, vector bool unsigned int)
vector unsigned int vec_nand(vector unsigned int, vector unsigned int)
vector signed long long vec_nand(vector bool long long, vector signed long long)
vector signed long long vec_nand(vector signed long long, vector bool long long)
vector signed long long vec_nand(vector signed long long, vector signed long long)
vector unsigned long long vec_nand(vector bool long long, vector unsigned long long)
vector unsigned long long vec_nand(vector unsigned long long, vector bool long long)
vector unsigned long long vec_nand(vector unsigned long long, vector unsigned long long)
vector signed char vec_orc(vector bool signed char, vector signed char)
vector signed char vec_orc(vector signed char, vector bool signed char)
vector signed char vec_orc(vector signed char, vector signed char)
vector unsigned char vec_orc(vector bool unsigned char, vector unsigned char)
vector unsigned char vec_orc(vector unsigned char, vector bool unsigned char)
vector unsigned char vec_orc(vector unsigned char, vector unsigned char)
vector short vec_orc(vector bool short, vector short)
vector short vec_orc(vector short, vector bool short)
vector short vec_orc(vector short, vector short)
vector unsigned short vec_orc(vector bool unsigned short, vector unsigned short)
vector unsigned short vec_orc(vector unsigned short, vector bool unsigned short)
vector unsigned short vec_orc(vector unsigned short, vector unsigned short)
vector int vec_orc(vector bool int, vector int)
vector int vec_orc(vector int, vector bool int)
vector int vec_orc(vector int, vector int)
vector unsigned int vec_orc(vector bool unsigned int, vector unsigned int)
vector unsigned int vec_orc(vector unsigned int, vector bool unsigned int)
vector unsigned int vec_orc(vector unsigned int, vector unsigned int)
vector signed long long vec_orc(vector bool long long, vector signed long long)
vector signed long long vec_orc(vector signed long long, vector bool long long)
vector signed long long vec_orc(vector signed long long, vector signed long long)
vector unsigned long long vec_orc(vector bool long long, vector unsigned long long)
vector unsigned long long vec_orc(vector unsigned long long, vector bool long long)
vector unsigned long long vec_orc(vector unsigned long long, vector unsigned long long)
vector signed char vec_div(vector signed char, vector signed char)
vector unsigned char vec_div(vector unsigned char, vector unsigned char)
vector signed short vec_div(vector signed short, vector signed short)
vector unsigned short vec_div(vector unsigned short, vector unsigned short)
vector signed int vec_div(vector signed int, vector signed int)
vector unsigned int vec_div(vector unsigned int, vector unsigned int)
vector signed long long vec_div(vector signed long long, vector signed long long)
vector unsigned long long vec_div(vector unsigned long long, vector unsigned long long)
vector unsigned char vec_mul(vector unsigned char, vector unsigned char)
vector unsigned int vec_mul(vector unsigned int, vector unsigned int)
vector unsigned long long vec_mul(vector unsigned long long, vector unsigned long long)
vector unsigned short vec_mul(vector unsigned short, vector unsigned short)
vector signed char vec_mul(vector signed char, vector signed char)
vector signed int vec_mul(vector signed int, vector signed int)
vector signed long long vec_mul(vector signed long long, vector signed long long)
vector signed short vec_mul(vector signed short, vector signed short)
vector signed long long vec_mergeh(vector signed long long, vector signed long long)
vector signed long long vec_mergeh(vector signed long long, vector bool long long)
vector signed long long vec_mergeh(vector bool long long, vector signed long long)
vector unsigned long long vec_mergeh(vector unsigned long long, vector unsigned long long)
vector unsigned long long vec_mergeh(vector unsigned long long, vector bool long long)
vector unsigned long long vec_mergeh(vector bool long long, vector unsigned long long)
vector double vec_mergeh(vector double, vector double)
vector double vec_mergeh(vector double, vector bool long long)
vector double vec_mergeh(vector bool long long, vector double)
vector signed long long vec_mergel(vector signed long long, vector signed long long)
vector signed long long vec_mergel(vector signed long long, vector bool long long)
vector signed long long vec_mergel(vector bool long long, vector signed long long)
vector unsigned long long vec_mergel(vector unsigned long long, vector unsigned long long)
vector unsigned long long vec_mergel(vector unsigned long long, vector bool long long)
vector unsigned long long vec_mergel(vector bool long long, vector unsigned long long)
vector double vec_mergel(vector double, vector double)
vector double vec_mergel(vector double, vector bool long long)
vector double vec_mergel(vector bool long long, vector double)
vector signed int vec_pack(vector signed long long, vector signed long long)
vector unsigned int vec_pack(vector unsigned long long, vector unsigned long long)
vector bool int vec_pack(vector bool long long, vector bool long long)
llvm-svn: 242171
David Blaikie [Tue, 14 Jul 2015 17:40:53 +0000 (17:40 +0000)]
Avoid MSVC-incompatible use of init list.
llvm-svn: 242170
Matthias Braun [Tue, 14 Jul 2015 17:38:17 +0000 (17:38 +0000)]
RAGreedy: Keep track of allocated PhysRegs internally
Do not use MachineRegisterInfo::setPhysRegUsed()/isPhysRegUsed()
anymore. This bitset changes function-global state and is set by the
VirtRegRewriter anyway.
Simply use a bitvector private to RAGreedy.
Differential Revision: http://reviews.llvm.org/D10910
llvm-svn: 242169
David Blaikie [Tue, 14 Jul 2015 17:27:39 +0000 (17:27 +0000)]
Rely on default zero-arg value for IRBuilder::CreateCall calls to zero-arg functions
Patch by servuswiegehtz at yahoo.de
llvm-svn: 242168
Nemanja Ivanovic [Tue, 14 Jul 2015 17:25:20 +0000 (17:25 +0000)]
Add missing builtins to the PPC back end for ABI compliance (vol. 4)
This patch corresponds to review:
http://reviews.llvm.org/D11183
Back end portion of the fourth round of additions to altivec.h.
llvm-svn: 242167
Tim Northover [Tue, 14 Jul 2015 17:23:55 +0000 (17:23 +0000)]
ARM: add at least one real test for r242123.
The ones committed were orthogonal to the change and would have passed before
that revision. What it *did* do was prevent an assertion failure when
generating object files.
llvm-svn: 242166
Matthias Braun [Tue, 14 Jul 2015 17:17:13 +0000 (17:17 +0000)]
PrologEpilogInserter: Rewrite API to determine callee save regsiters.
This changes TargetFrameLowering::processFunctionBeforeCalleeSavedScan():
- Rename the function to determineCalleeSaves()
- Pass a bitset of callee saved registers by reference, thus avoiding
the function-global PhysRegUsed bitset in MachineRegisterInfo.
- Without PhysRegUsed the implementation is fine tuned to not save
physcial registers which are only read but never modified.
Related to rdar://
21539507
Differential Revision: http://reviews.llvm.org/D10909
llvm-svn: 242165
Tim Northover [Tue, 14 Jul 2015 17:07:29 +0000 (17:07 +0000)]
AArch64: add rev64 alias for 64-bit rev instruction.
It could be useful to assembly programmers and makes the permitted variants a
little more uniform.
llvm-svn: 242164
Krzysztof Parzyszek [Tue, 14 Jul 2015 17:07:24 +0000 (17:07 +0000)]
[Hexagon] Generate "extract" instructions more aggressively
Generate extract instructions (via intrinsics) before the DAG combiner
folds shifts into unrecognizable forms.
llvm-svn: 242163
Rafael Espindola [Tue, 14 Jul 2015 16:55:13 +0000 (16:55 +0000)]
llvm-ar: Don't try to extract from thin archives.
This matches the gnu ar behavior.
llvm-svn: 242162
Hans Wennborg [Tue, 14 Jul 2015 16:50:14 +0000 (16:50 +0000)]
AST Matchers: pass ast_type_traits::DynTypedNode by const-ref
(Broken out from http://reviews.llvm.org/D11168)
llvm-svn: 242161
Hans Wennborg [Tue, 14 Jul 2015 16:39:01 +0000 (16:39 +0000)]
ARMAsmParser: Take MCInst param by const-ref
(Broken out from http://reviews.llvm.org/D11167)
llvm-svn: 242160
David Blaikie [Tue, 14 Jul 2015 16:38:30 +0000 (16:38 +0000)]
Add default value for Args parameter of IRBuilder::CreateCall
Convenient for calls to zero-argument functions.
Patch by servuswiegehtz at yahoo.de
llvm-svn: 242159
Rafael Espindola [Tue, 14 Jul 2015 16:34:23 +0000 (16:34 +0000)]
Sleep for 2.1 seconds to see if that makes the test stable on windows.
Might fix pr24106.
llvm-svn: 242158
Hans Wennborg [Tue, 14 Jul 2015 16:27:16 +0000 (16:27 +0000)]
Allocate the IntervalMap in ELF.h on the heap to work around MSVC alignment bug (PR24113)
llvm-svn: 242157
Rafael Espindola [Tue, 14 Jul 2015 16:02:40 +0000 (16:02 +0000)]
llvm-ar: print an error when the requested member is not found.
llvm-svn: 242156
Jonathan Peyton [Tue, 14 Jul 2015 15:42:03 +0000 (15:42 +0000)]
Rename OMPT placeholder type names to be in the OMPT name space
r242052 changed the name of OMPT placeholder functions to move them from
the omp_ name space to the ompt_ name space. This patch moves the names of the
types of these functions into the OMPT name space as well.
Patch by John Mellor-Crummey
Differential Revision: http://reviews.llvm.org/D11171
llvm-svn: 242155
Benjamin Kramer [Tue, 14 Jul 2015 15:34:19 +0000 (15:34 +0000)]
Pull trivial SanitizerSet methods into the header.
Inlining them is always preferable to a call. NFC.
llvm-svn: 242154
Rafael Espindola [Tue, 14 Jul 2015 15:22:42 +0000 (15:22 +0000)]
Use a range loop. NFC.
llvm-svn: 242153
JF Bastien [Tue, 14 Jul 2015 15:10:34 +0000 (15:10 +0000)]
Revert "Fix `llvm-config` to emit the linker flag for the combined shared object built by autoconfig/make instead of the individual components."
This reverts commit
01446706b4c0a86bb64768f307079cab5c514aa3.
Causes breakage, seems to be related to 'svn' in the file's name:
CC=gcc CXX=g++ \
../llvm/configure \
--prefix=/usr \
--sysconfdir=/etc \
--enable-shared \
--enable-libffi \
--enable-targets=all \
--disable-assertions \
--with-python=/usr/bin/python2 \
--enable-optimized
make REQUIRES_RTTI=1 ENABLE_PIC=1
results:
llvm[2]: Linking Release unit test Support (without symbols)
llvm[2]: ======= Finished Linking Release Unit test Support (without symbols)
make[3]: Entering directory '/build/llvm-svn/src/build/bindings/ocaml/llvm'
make[3]: *** No rule to make target '/build/llvm-
svn/src/build/Release/lib/ocaml/libLLVM-3.7.0svn.so', needed by 'build-
deplibs'. Stop.
make[3]: *** Waiting for unfinished jobs....
llvm[3]: Compiling llvm_ocaml.c for Release build
make[3]: Leaving directory '/build/llvm-svn/src/build/bindings/ocaml/llvm'
/build/llvm-svn/src/llvm/Makefile.rules:880: recipe for target 'all' failed
/build/llvm-svn/src/llvm/Makefile.rules:965: recipe for target 'all' failed
Differential Revision: http://reviews.llvm.org/D10716
llvm-svn: 242152
Rafael Espindola [Tue, 14 Jul 2015 15:06:18 +0000 (15:06 +0000)]
Rename a test. NFC.
llvm-svn: 242151
Yaron Keren [Tue, 14 Jul 2015 15:02:09 +0000 (15:02 +0000)]
Support mingw-w64 toolchain on openSUSE and likely other Linuxes
Thanks to Ismail Donmez for testing and to Joerg Sonnenbergerþ for his comments.
llvm-svn: 242150
Marshall Clow [Tue, 14 Jul 2015 14:46:32 +0000 (14:46 +0000)]
Move bits from N4258. Mark vector's move-constructor unconditionally noexcept in C++1z
llvm-svn: 242148
Alexandros Lamprineas [Tue, 14 Jul 2015 14:34:06 +0000 (14:34 +0000)]
Caused regressions: compile Release+Asserts failed on clang-native-arm-cortex-a9
Revert "-Added API for retrieving the default FPU of a CPU from TargetParser."
This reverts commit
01199ab0c6ff2d5c4f6b2c05a95ec011e41c4669.
llvm-svn: 242147
Tom Stellard [Tue, 14 Jul 2015 14:15:03 +0000 (14:15 +0000)]
AMDGPU/SI: Add support for shrinking v_cndmask_b32_e32 instructions
Reviewers: arsenm
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11061
llvm-svn: 242146
Aaron Ballman [Tue, 14 Jul 2015 14:14:00 +0000 (14:14 +0000)]
Silencing two MSVC warnings; 'argument' : truncation from 'unsigned int' to 'int16_t' and truncation of constant value. NFC intended.
llvm-svn: 242145
Asaf Badouh [Tue, 14 Jul 2015 14:02:45 +0000 (14:02 +0000)]
[x86] add 2 bit to ObjCOrBuiltinID and new intrinsics
add 2 bit to ObjCOrBuiltinID (changed from 11bits to 13bits), see discussion in
Add new intrinsics support that already covered by the BE.
All the intrinsics are covered by tests
Differential Revision: http://reviews.llvm.org/D10893
llvm-svn: 242144
Ewan Crawford [Tue, 14 Jul 2015 13:29:03 +0000 (13:29 +0000)]
Fix LLDB Xcode build broken in r242137
llvm-svn: 242143
Adhemerval Zanella [Tue, 14 Jul 2015 13:25:32 +0000 (13:25 +0000)]
[ELF/AArch64] Fix export TLS dynamic symbol
This patch fixes the TLS dynamic variable exportation from .got.plt segments,
created by General-dynamic relocations (TLSDESC). Current code only export
symbols in dynamic table from .got sections.
llvm-svn: 242142
Alexandros Lamprineas [Tue, 14 Jul 2015 13:20:48 +0000 (13:20 +0000)]
-Added API for retrieving the default FPU of a CPU from TargetParser.
-Implemented as a table lookup.
Change-Id: Ibf7217f6bd2769e9c06835a5aede3d072dee6757
Phabricator: http://reviews.llvm.org/D11100
llvm-svn: 242141
Benjamin Kramer [Tue, 14 Jul 2015 12:37:59 +0000 (12:37 +0000)]
[Analyzer] Move FindSuperCallVisitor into an anonymous namespace.
No functionality change.
llvm-svn: 242140
Daniel Sanders [Tue, 14 Jul 2015 12:24:22 +0000 (12:24 +0000)]
[mips] Fix li/la differences between IAS and GAS.
Summary:
- Signed 16-bit should have priority over unsigned.
- For la, unsigned 16-bit must use ori+addu rather than directly use ori.
- Correct tests on 32-bit immediates with 64-bit predicates by
sign-extending the immediate beforehand. For example, isInt<16>(0xffff8000)
should be true and use addiu.
Also split li/la testing into separate files due to their size.
Reviewers: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10967
llvm-svn: 242139
Daniel Jasper [Tue, 14 Jul 2015 11:26:14 +0000 (11:26 +0000)]
clang-format: Fix formatting of multiple lambdas in initializers.
Before:
SomeFunction({[&] {
// comment
},
[&] {
// comment
}});
After:
SomeFunction({[&] {
// comment
},
[&] {
// comment
}});
llvm-svn: 242138
Ewan Crawford [Tue, 14 Jul 2015 10:56:58 +0000 (10:56 +0000)]
Expression evaluation, a new ThreadPlanCallFunctionUsingABI for executing a function call on target via register manipulation
For Hexagon we want to be able to call functions during debugging, however currently lldb only supports this when there is JIT support.
Although emulation using IR interpretation is an alternative, it is currently limited in that it can't make function calls.
In this patch we have extended the IR interpreter so that it can execute a function call on the target using register manipulation.
To do this we need to handle the Call IR instruction, passing arguments to a new thread plan and collecting any return values to pass back into the IR interpreter.
The new thread plan is needed to call an alternative ABI interface of "ABI::PerpareTrivialCall()", allowing more detailed information about arguments and return values.
Reviewers: jingham, spyffe
Subscribers: emaste, lldb-commits, ted, ADodds, deepak2427
Differential Revision: http://reviews.llvm.org/D9404
llvm-svn: 242137
Tobias Grosser [Tue, 14 Jul 2015 10:52:58 +0000 (10:52 +0000)]
Mark a couple of items as completed
llvm-svn: 242136
Tobias Grosser [Tue, 14 Jul 2015 10:45:03 +0000 (10:45 +0000)]
Drop outdated video
llvm-svn: 242135
Tobias Grosser [Tue, 14 Jul 2015 10:44:06 +0000 (10:44 +0000)]
www: Add link to llvm.org
llvm-svn: 242134
Alexey Bataev [Tue, 14 Jul 2015 10:32:29 +0000 (10:32 +0000)]
[OPENMP] Drop type qualifiers from private variables.
If the variable is marked as private in OpenMP construct, the reference to this variable should not keep type qualifiers for the original variable. Private copy is not volatile or constant, so we can use unqualified type for private copy.
llvm-svn: 242133
Serge Pavlov [Tue, 14 Jul 2015 10:02:10 +0000 (10:02 +0000)]
Classes inside lambdas are local not nested.
If a lambda used as default argument in a method declaration contained
a local class, that class was incorrectly recognized as nested class.
In this case compiler tried to postpone parsing of this class until
the enclosing class is finished, which caused crashes in some cases.
This change fixes PR13987.
Differential Revision: http://reviews.llvm.org/D11006
llvm-svn: 242132
NAKAMURA Takumi [Tue, 14 Jul 2015 09:45:28 +0000 (09:45 +0000)]
Tweak clang/test/PCH/chain-openmp-threadprivate.cpp to satisfy i686-win32.
llvm-svn: 242131
Tobias Grosser [Tue, 14 Jul 2015 09:33:13 +0000 (09:33 +0000)]
Use schedule trees to represent execution order of statements
Instead of flat schedules, we now use so-called schedule trees to represent the
execution order of the statements in a SCoP. Schedule trees make it a lot easier
to analyze, understand and modify properties of a schedule, as specific nodes
in the tree can be choosen and possibly replaced.
This patch does not yet fully move our DependenceInfo pass to schedule trees,
as some additional performance analysis is needed here. (In general schedule
trees should be faster in compile-time, as the more structured representation
is generally easier to analyze and work with). We also can not yet perform the
reduction analysis on schedule trees.
For more information regarding schedule trees, please see Section 6 of
https://lirias.kuleuven.be/handle/
123456789/497238
llvm-svn: 242130
Chandler Carruth [Tue, 14 Jul 2015 08:42:39 +0000 (08:42 +0000)]
[PM/AA] Reformat GlobalsModRef so that subsequent patches I make here
don't continually introduce formatting deltas. NFC
llvm-svn: 242129
Petr Pavlu [Tue, 14 Jul 2015 08:00:34 +0000 (08:00 +0000)]
Fix comment typo
Test commit access.
llvm-svn: 242128
Alexey Bataev [Tue, 14 Jul 2015 07:55:48 +0000 (07:55 +0000)]
Fix for clang memcpyizer bugs 23911 and 23924 (patch by Denis Zobnin)
The fix is to remove duplicate copy-initialization of the only memcpy-able struct member and to correct the address of aggregately initialized members in destructors' calls during stack unwinding (in order to obtain address of struct member by using GEP instead of 'bitcast').
Differential Revision: http://reviews.llvm.org/D10990
llvm-svn: 242127
David Majnemer [Tue, 14 Jul 2015 06:19:58 +0000 (06:19 +0000)]
[SROA] Don't de-atomic volatile loads and stores
Volatile loads and stores are made visible in global state regardless of
what memory is involved. It is not correct to disregard the ordering
and synchronization scope because it is possible to synchronize with
memory operations performed by hardware.
This partially addresses PR23737.
llvm-svn: 242126
Yaron Keren [Tue, 14 Jul 2015 06:01:14 +0000 (06:01 +0000)]
Fix test for Visual C++ link.exe.
llvm-svn: 242125
Yaron Keren [Tue, 14 Jul 2015 05:58:56 +0000 (05:58 +0000)]
Fix test for Visual C++.
llvm-svn: 242124
Yaron Keren [Tue, 14 Jul 2015 05:51:05 +0000 (05:51 +0000)]
Generate correct asm info for mingw and cygwin ARM targets.
http://reviews.llvm.org/D11075
Patch by Martell Malone
Reviewed by Reid Kleckner
llvm-svn: 242123
Kate Stone [Tue, 14 Jul 2015 05:48:36 +0000 (05:48 +0000)]
Fixed line wrapping for the "long help" content in LLDB commands. Content is now dynamically wrapped for the column width of the current terminal. Lines that begin with whitespace will be indented identically on subsequent lines to maintain formatting.
Existing commands supplying this type of help content have been reworked to take advantage of the changes. In addition to formatting changes, content was changes for accuracy and clarity purposes.
<rdar://problem/
21269977>
llvm-svn: 242122
Yaron Keren [Tue, 14 Jul 2015 05:23:34 +0000 (05:23 +0000)]
Add support for -fuse-ld= in the mingw toolchain driver.
We will still default to ld until such a time lld become a
stable release. lld supports arm NT under the machine name "thumb2pe".
http://reviews.llvm.org/D11088
Patch by Martell Malone
Reviewed by Reid Kleckner
llvm-svn: 242121