NAKAMURA Takumi [Fri, 4 Apr 2014 10:16:51 +0000 (10:16 +0000)]
Tweak unconditional-branch.ll passing on any hosts, while investigating x86_64-mingw32.
Sorry for the breakage.
For now, it will fail in two ways:
1. To fail for targeting x86_64-mingw32.
<stdin>:131:8: note: possible intended match here
0x30830a0100000002 3 0 1 0 0 is_stmt
2. To fail not to find the target x86.
llc: : error: unable to get target for 'x86_64-unknown-unknown',
see --version and --triple.
llvm-svn: 205621
Alexey Bataev [Fri, 4 Apr 2014 10:02:14 +0000 (10:02 +0000)]
[OPENMP][C++11] Renamed loop vars properly.
llvm-svn: 205620
Dmitry Vyukov [Fri, 4 Apr 2014 09:52:41 +0000 (09:52 +0000)]
tsan: improve error message in test
we've seen a flake on this test
next time it happens we will be able to gather some info
llvm-svn: 205619
Evgeniy Stepanov [Fri, 4 Apr 2014 09:47:41 +0000 (09:47 +0000)]
[msan] Introduce MsanThread. Move thread-local allocator cache out of TLS.
This reduces .tbss from 109K down to almost nothing.
llvm-svn: 205618
Kostya Serebryany [Fri, 4 Apr 2014 09:10:58 +0000 (09:10 +0000)]
[asan] fix a leak in __tls_get_addr handler; introduce a run-time flag to disable this handler completely; remove a workaround for a bug fixed in glibc
llvm-svn: 205617
Tim Northover [Fri, 4 Apr 2014 09:03:09 +0000 (09:03 +0000)]
ARM64: use regalloc-friendly COPY_TO_REGCLASS for bitcasts
The previous patterns directly inserted FMOV or INS instructions into
the DAG for scalar_to_vector & bitconvert patterns. This is horribly
inefficient and can generated lots more GPR <-> FPR register traffic
than necessary.
It's much better to emit instructions the register allocator
understands so it can coalesce the copies when appropriate.
It led to at least one ISelLowering hack to avoid the problems, which
was incorrect for v1i64 (FPR64 has no dsub). It can now be removed
entirely.
This should also fix PR19331.
llvm-svn: 205616
Tim Northover [Fri, 4 Apr 2014 09:03:02 +0000 (09:03 +0000)]
ARM64: add 128-bit MLA operations to the custom selection code.
Without this change, the llvm_unreachable kicked in. The code pattern
being spotted is rather non-canonical for 128-bit MLAs, but it can
happen and there's no point in generating sub-optimal code for it just
because it looks odd.
Should fix PR19332.
llvm-svn: 205615
Evgeniy Stepanov [Fri, 4 Apr 2014 08:58:16 +0000 (08:58 +0000)]
Revert r205613.
llvm-svn: 205614
Evgeniy Stepanov [Fri, 4 Apr 2014 08:39:50 +0000 (08:39 +0000)]
[msan] Fix compilation of a disabled test.
llvm-svn: 205613
Stepan Dyatkovskiy [Fri, 4 Apr 2014 08:14:13 +0000 (08:14 +0000)]
Fixed register class in STRD instruction for Thumb2 mode.
llvm-svn: 205612
Daniel Jasper [Fri, 4 Apr 2014 06:46:23 +0000 (06:46 +0000)]
clang-format: Don't merge simple blocks in case statements.
Before:
switch (a) {
case 1: { return 'a'; }
}
After:
switch (a) {
case 1: {
return 'a';
}
}
llvm-svn: 205611
Craig Topper [Fri, 4 Apr 2014 05:16:06 +0000 (05:16 +0000)]
Make consistent use of MCPhysReg instead of uint16_t throughout the tree.
llvm-svn: 205610
Saleem Abdulrasool [Fri, 4 Apr 2014 05:08:53 +0000 (05:08 +0000)]
Basic: rename VisualStudio to Windows
Visual Studio is the Integrated Development Environment. The toolchain is
generally referred to MSVC. Rename the target information to be more precise as
per the recommendation of Reid Kleckner.
llvm-svn: 205609
Richard Trieu [Fri, 4 Apr 2014 04:13:47 +0000 (04:13 +0000)]
Extend -Wtautological-constant-out-of-range-compare to handle boolean values
better. This warning will now trigger on the following conditionals:
bool b;
int i;
if (b > 1) {} // always false
if (0 <= (i > 5)) {} // always true
if (-1 > b) {} // always false
Patch by Per Viberg.
llvm-svn: 205608
Saleem Abdulrasool [Fri, 4 Apr 2014 04:06:10 +0000 (04:06 +0000)]
sweep up -Wformat warnings from gcc
This is a purely mechanical change explicitly casting any parameters for printf
style conversion. This cleans up the warnings emitted by gcc 4.8 on Linux.
llvm-svn: 205607
Justin Bogner [Fri, 4 Apr 2014 02:48:51 +0000 (02:48 +0000)]
CodeGen: Don't create branch weight metadata from empty profiles
If all of our weights are zero when calculating branch weights, it
means we haven't profiled the code in question. Avoid creating a
metadata node that says all branches are equally likely in this case.
The test also checks constructs that hit the other createBranchWeights
overload. These were already working.
llvm-svn: 205606
Jim Grosbach [Fri, 4 Apr 2014 02:14:38 +0000 (02:14 +0000)]
Fix spelling. Sigh.
llvm-svn: 205605
Jim Grosbach [Fri, 4 Apr 2014 02:11:03 +0000 (02:11 +0000)]
ARM: Range based for-loop over block predecessors.
No functional change.
llvm-svn: 205604
Jim Grosbach [Fri, 4 Apr 2014 02:10:59 +0000 (02:10 +0000)]
Add iterator_ranges for block pred/succ.
llvm-svn: 205603
Jim Grosbach [Fri, 4 Apr 2014 02:10:55 +0000 (02:10 +0000)]
ARM: Use range-based for loops in frame lowering.
No functional change.
llvm-svn: 205602
Quentin Colombet [Fri, 4 Apr 2014 02:05:21 +0000 (02:05 +0000)]
[RegAllocGreedy][Last Chance Recoloring] Emit diagnostics when last chance
recoloring cut-offs are encountered and register allocation failed.
This is related to PR18747
Patch by MAYUR PANDEY <mayur.p@samsung.com>.
llvm-svn: 205601
Quentin Colombet [Fri, 4 Apr 2014 02:02:49 +0000 (02:02 +0000)]
Revert r205599, the commit was not intended to have so many changes
llvm-svn: 205600
Quentin Colombet [Fri, 4 Apr 2014 01:58:57 +0000 (01:58 +0000)]
[RegAllocGreedy][Last Chance Recoloring] Emit diagnostics when last chance
recoloring cut-offs are hit.
This is related to PR18747.
Patch by MAYUR PANDEY <mayur.p@samsung.com>
llvm-svn: 205599
Reid Kleckner [Fri, 4 Apr 2014 01:36:55 +0000 (01:36 +0000)]
Add clang-cl alias to allow users to disable c4005
If we ever want three or more aliases, at that point we should put MSVC
warning ids in DiagnosticGroups.td. We can use that to support #pragma
warning.
llvm-svn: 205598
Rui Ueyama [Fri, 4 Apr 2014 01:22:51 +0000 (01:22 +0000)]
SymbolTable::size() returns an unsigned int.
It's better to use the same type rather than a fixed width integer type
that may be different from the return type.
llvm-svn: 205597
Saleem Abdulrasool [Fri, 4 Apr 2014 01:19:56 +0000 (01:19 +0000)]
ARM: fix test case missed in previous roundup
This should hopefully bring the last MSVC buildbot back to green!
llvm-svn: 205596
Saleem Abdulrasool [Fri, 4 Apr 2014 01:19:54 +0000 (01:19 +0000)]
MIPS: remove vim swap file
llvm-svn: 205595
Rui Ueyama [Fri, 4 Apr 2014 00:59:50 +0000 (00:59 +0000)]
Use range-based for loop. No functionality change.
llvm-svn: 205594
Rui Ueyama [Fri, 4 Apr 2014 00:39:37 +0000 (00:39 +0000)]
Do not use temporary variables to pass them to forEachUndefines.
So that it's obvious that we pass these callbacks only to forEachUndefines.
llvm-svn: 205593
Rafael Espindola [Fri, 4 Apr 2014 00:31:12 +0000 (00:31 +0000)]
Add an assert that this is only used with .o files.
I am not sure how to get a relocation in a .dylib, but this function would
return the wrong value if passed one.
llvm-svn: 205592
Reid Kleckner [Fri, 4 Apr 2014 00:17:16 +0000 (00:17 +0000)]
Put macro redefinition warnings under -Wmacro-redefined
This is consistent with -Wbuiltin-macro-redefined, and puts this common
extension warning under a flag.
Reviewers: rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D3283
llvm-svn: 205591
Rui Ueyama [Fri, 4 Apr 2014 00:15:52 +0000 (00:15 +0000)]
Return a vector rather than mutating a given one.
This is cleaner and as efficient as before.
Differential Revision: http://llvm-reviews.chandlerc.com/D3284
llvm-svn: 205590
Rui Ueyama [Fri, 4 Apr 2014 00:14:04 +0000 (00:14 +0000)]
Rename getInputGraph() and getNextFile().
Seems getSomething() is more common naming scheme than just a noun
to get something, so renaming these members.
Differential Revision: http://llvm-reviews.chandlerc.com/D3285
llvm-svn: 205589
Rafael Espindola [Thu, 3 Apr 2014 23:54:35 +0000 (23:54 +0000)]
Implement getRelocationAddress for MachO and ET_REL elf files.
With that, fix the symbolizer to work with any ELF file.
llvm-svn: 205588
Rafael Espindola [Thu, 3 Apr 2014 23:51:28 +0000 (23:51 +0000)]
Implement macho relocation iterators with section number + relocation number.
This will make it possible to implement getRelocationAddress.
llvm-svn: 205587
Saleem Abdulrasool [Thu, 3 Apr 2014 23:47:24 +0000 (23:47 +0000)]
ARM: yet another round of ARM test clean ups
llvm-svn: 205586
Jim Grosbach [Thu, 3 Apr 2014 23:43:26 +0000 (23:43 +0000)]
Tidy up. Space before ':' in range-based for loops.
llvm-svn: 205585
Jim Grosbach [Thu, 3 Apr 2014 23:43:22 +0000 (23:43 +0000)]
Tidy up. 80 columns.
llvm-svn: 205584
Jim Grosbach [Thu, 3 Apr 2014 23:43:18 +0000 (23:43 +0000)]
Tidy up. Trailing whitespace.
llvm-svn: 205583
Jim Grosbach [Thu, 3 Apr 2014 23:43:12 +0000 (23:43 +0000)]
Fix typo.
llvm-svn: 205582
Rafael Espindola [Thu, 3 Apr 2014 23:20:02 +0000 (23:20 +0000)]
Fix llvm-objdump crash.
llvm-svn: 205581
Fariborz Jahanian [Thu, 3 Apr 2014 23:06:35 +0000 (23:06 +0000)]
Turn off -Wmissing-noreturn warning for blocks
as there is no way to attach this attribute to the
block literal. // rdar://
16274746
llvm-svn: 205580
Rui Ueyama [Thu, 3 Apr 2014 22:58:41 +0000 (22:58 +0000)]
Update comment.
llvm-svn: 205579
Rui Ueyama [Thu, 3 Apr 2014 22:43:42 +0000 (22:43 +0000)]
Minor cleanups.
llvm-svn: 205578
Rafael Espindola [Thu, 3 Apr 2014 22:42:22 +0000 (22:42 +0000)]
Remove section_rel_empty. Just compare begin() and end() instead.
llvm-svn: 205577
Rui Ueyama [Thu, 3 Apr 2014 22:36:55 +0000 (22:36 +0000)]
Replace a recursion with a loop for speed.
llvm-svn: 205576
Rui Ueyama [Thu, 3 Apr 2014 22:24:40 +0000 (22:24 +0000)]
Do not check deadStripNever twice.
Atoms with deadStripNever attribute has already been added to the
dead strip root set at end of Resolver::doDefinedAtom, so no need
to check it for each atom again.
Differential Revision: http://llvm-reviews.chandlerc.com/D3282
llvm-svn: 205575
Rui Ueyama [Thu, 3 Apr 2014 22:21:59 +0000 (22:21 +0000)]
Move code into a helper function.
Move code that always runs after doUndefinedAtom into doUndefinedAtom
for readability.
llvm-svn: 205574
Joerg Sonnenberger [Thu, 3 Apr 2014 22:00:08 +0000 (22:00 +0000)]
Include stdlib.h for getenv when !NDEBUG.
llvm-svn: 205573
Rafael Espindola [Thu, 3 Apr 2014 21:48:41 +0000 (21:48 +0000)]
Reuse existing variable.
llvm-svn: 205572
Eli Bendersky [Thu, 3 Apr 2014 21:18:25 +0000 (21:18 +0000)]
Optimize away unnecessary address casts.
Removes unnecessary casts from non-generic address spaces to the generic address
space for certain code patterns.
Patch by Jingyue Wu.
llvm-svn: 205571
Rui Ueyama [Thu, 3 Apr 2014 21:16:37 +0000 (21:16 +0000)]
Minor cleanup.
llvm-svn: 205570
Rui Ueyama [Thu, 3 Apr 2014 21:11:22 +0000 (21:11 +0000)]
Simplify two if's.
llvm-svn: 205569
Rui Ueyama [Thu, 3 Apr 2014 21:06:23 +0000 (21:06 +0000)]
Fix comments.
llvm-svn: 205568
Rui Ueyama [Thu, 3 Apr 2014 21:00:03 +0000 (21:00 +0000)]
Early return.
llvm-svn: 205567
Rui Ueyama [Thu, 3 Apr 2014 20:54:47 +0000 (20:54 +0000)]
Fix ELFFileNode::resetNextIndex().
ELFLinkingContext has a method addUndefinedAtomsFromSharedLibrary().
The method is being used to skip a shared library within --start-group
and --end-group if it's not the first iteration of the group.
We have the same, incomplete mechanism to skip a shared library within
a group too. That's implemented in ELFFileNode. It's intended to not
return a shared library on the second or further iterations in the
first place. This mechanism is preferred over
addUndefinedAtomsFromSharedLibrary because the policy is implemented
in Input Graph -- that's what Input Graph is for.
This patch removes the dupluicate feature and fixes ELFFileNode.
Differential Revision: http://llvm-reviews.chandlerc.com/D3280
llvm-svn: 205566
Lang Hames [Thu, 3 Apr 2014 20:51:08 +0000 (20:51 +0000)]
[ARM64] Teach the ARM64DeadRegisterDefinition pass to respect implicit-defs.
When rematerializing through truncates, the coalescer may produce instructions
with dead defs, but live implicit-defs of subregs:
E.g.
%X1<def,dead> = MOVi64imm 2, %W1<imp-def>; %X1:GPR64, %W1:GPR32
These instructions are live, and their definitions should not be rewritten.
Fixes <rdar://problem/
16492408>
llvm-svn: 205565
Rui Ueyama [Thu, 3 Apr 2014 20:47:50 +0000 (20:47 +0000)]
Expand 'auto' that's hard for human to deduce its real type.
llvm-svn: 205564
NAKAMURA Takumi [Thu, 3 Apr 2014 20:40:37 +0000 (20:40 +0000)]
unconditional-branch.ll is broken for targeting x86_64-cygming. Add an explicit triple for now.
llvm-svn: 205563
Tom Stellard [Thu, 3 Apr 2014 20:19:29 +0000 (20:19 +0000)]
R600: Correct opcode for BFE_INT
Acording to AMD documentation, the correct opcode for
BFE_INT is 0x5, not 0x4
Fixes Arithm/Absdiff.Mat/3 OpenCV test
Patch by: Bruno Jiménez
llvm-svn: 205562
Tom Stellard [Thu, 3 Apr 2014 20:19:27 +0000 (20:19 +0000)]
R600/SI: Lower 64-bit immediates using REG_SEQUENCE
llvm-svn: 205561
NAKAMURA Takumi [Thu, 3 Apr 2014 20:08:02 +0000 (20:08 +0000)]
Revert r205551, "Attempt to XFAIL this on mingw and cygwin hosts." It didn't fail on cygming.
That said, it emits errors to the stderr (with exit(0));
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_DIR32
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_DIR32
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_SECREL
error: failed to compute relocation: IMAGE_REL_I386_DIR32
llvm-svn: 205560
NAKAMURA Takumi [Thu, 3 Apr 2014 20:07:51 +0000 (20:07 +0000)]
llvm/test/CodeGen/X86/peephole-multiple-folds.ll: Relax expressions to satisfy win32.
llvm-svn: 205559
Rui Ueyama [Thu, 3 Apr 2014 19:51:14 +0000 (19:51 +0000)]
Add empty() to atom_collection.
"x.empty()" is more idiomatic than "x.size() == 0". This patch is to
add such method and use it in LLD.
Differential Revision: http://llvm-reviews.chandlerc.com/D3279
llvm-svn: 205558
Fariborz Jahanian [Thu, 3 Apr 2014 19:43:01 +0000 (19:43 +0000)]
vector [Sema]. Check for proper use of 's' char prefix
(which indicates vector expression is a string of hex
values) instead of crashing in code gen. // rdar://
16492792
llvm-svn: 205557
Tobias Grosser [Thu, 3 Apr 2014 19:38:38 +0000 (19:38 +0000)]
Add another hint for fixing check-polly errors to get_started.html
Reversed the order in which LD_LIBRARY_PATH is defined in order to make sure the
${CLOOG_INSTALL} prefix is found first.
Contributed-by: Christian Bielert <cib123@googlemail.com>
llvm-svn: 205556
Ed Maste [Thu, 3 Apr 2014 19:27:39 +0000 (19:27 +0000)]
Avoid crash if symbol returns a null name
llvm-svn: 205555
Reid Kleckner [Thu, 3 Apr 2014 19:04:24 +0000 (19:04 +0000)]
-fms-extensions: Error out on #pragma init_seg
By ignoring this pragma with a warning, we're essentially miscompiling
the user's program. WebKit / Blink use this pragma to disable dynamic
initialization and finalization of some static data, and running the
dtors crashes the program.
Error out for now, so that /fallback compiles the TU correctly with
MSVC. This pragma should be implemented some time this month, and we
can remove this hack.
llvm-svn: 205554
Tobias Grosser [Thu, 3 Apr 2014 18:56:13 +0000 (18:56 +0000)]
Note of last Polly phone call
llvm-svn: 205553
Rui Ueyama [Thu, 3 Apr 2014 18:25:36 +0000 (18:25 +0000)]
Remove "virtual" and add "override".
Seems clang-modernize couldn't add "override" to nested classes, so
doing it by hand. Also removed unused virtual member function that
is not overriding anything, that seems to have been added by mistake.
llvm-svn: 205552
Eric Christopher [Thu, 3 Apr 2014 18:23:52 +0000 (18:23 +0000)]
Attempt to XFAIL this on mingw and cygwin hosts. The line table on
these is very much off and is more than just the branch
from this bug incorrect:
Address Line Column File ISA Discriminator Flags
------------------ ------ ------ ------ --- ------------- -------------
0x30830a0100000002 3 0 1 0 0 is_stmt
0x30830a0100000008 3 0 1 0 0 is_stmt end_sequence
llvm-svn: 205551
Rui Ueyama [Thu, 3 Apr 2014 18:13:14 +0000 (18:13 +0000)]
Remove "this->".
For most member function calls we do not use "this->" in this file.
Remove the rest for consistency.
llvm-svn: 205550
Tobias Grosser [Thu, 3 Apr 2014 18:12:13 +0000 (18:12 +0000)]
Add a paragraph describing how to configure the python interpreter.
Contributed-by: cib123@googlemail.com
llvm-svn: 205549
Roman Divacky [Thu, 3 Apr 2014 18:04:52 +0000 (18:04 +0000)]
Revert r205436:
Extend the SSE2 comment lexing to AVX2. Only 16byte align when not on AVX2.
This provides some 3% speedup when preprocessing gcc.c as a single file.
The patch is wrong, it always uses SSE2, and when I fix that there's no speedup
at all. I am not sure where the 3% came from previously.
--Thi lie, and those below, will be ignored--
M Lex/Lexer.cpp
llvm-svn: 205548
Eli Bendersky [Thu, 3 Apr 2014 17:51:58 +0000 (17:51 +0000)]
Fix PR19270 - type mismatch caused by invalid optimization.
Patch by Jingyue Wu.
llvm-svn: 205547
Eric Christopher [Thu, 3 Apr 2014 17:40:08 +0000 (17:40 +0000)]
Loosen up check so that we can pass on platforms that generate
slightly more verbose than needed line tables, e.g.:
Address Line Column File ISA Discriminator Flags
------------------ ------ ------ ------ --- ------------- -------------
0x0000000000000000 1 0 1 0 0 is_stmt
0x0000000000000000 1 0 1 0 0 is_stmt prologue_end
0x0000000000000010 2 0 1 0 0 is_stmt
0x0000000000000018 4 0 1 0 0 is_stmt
these should probably be looked at, but it isn't affecting the correctness
of the testcase.
llvm-svn: 205546
Saleem Abdulrasool [Thu, 3 Apr 2014 17:35:22 +0000 (17:35 +0000)]
ARM: update even more tests
More updating of tests to be explicit about the target triple rather than
relying on the default target triple supporting ARM mode.
Indicate to lit that object emission is not yet available for Windows on ARM.
llvm-svn: 205545
Jim Ingham [Thu, 3 Apr 2014 17:16:17 +0000 (17:16 +0000)]
Get "dis -c -s" working again.
pr19324
llvm-svn: 205544
Faisal Vali [Thu, 3 Apr 2014 16:32:21 +0000 (16:32 +0000)]
Teach getTemplateInstantiationPattern to deal with generic lambdas.
No functionality change.
When determining the pattern for instantiating a generic lambda call operator specialization - we must not go drilling down for the 'prototype' (i.e. as written) pattern - rather we must use our partially transformed pattern (whose DeclRefExprs are wired correctly to any enclosing lambda's decls that should be mapped correctly in a local instantiation scope) that is the templated pattern of the specialization's primary template (even though the primary template might be instantiated from a 'prototype' member-template). Previously, the drilling down was haltted by marking the instantiated-from primary template as a member-specialization (incorrectly).
This prompted Richard to remark (http://llvm-reviews.chandlerc.com/D1784?id=4687#inline-10272)
"It's a bit nasty to (essentially) set this bit incorrectly. Can you put the check into getTemplateInstantiationPattern instead?"
In my reckless youth, I chose to ignore that comment. With the passage of time, I have come to learn the value of bowing to the will of the angry Gods ;)
llvm-svn: 205543
Dmitri Gribenko [Thu, 3 Apr 2014 16:29:11 +0000 (16:29 +0000)]
ArrayRef: use std::vector::data() now that we are building in C++11 mode
llvm-svn: 205542
Saleem Abdulrasool [Thu, 3 Apr 2014 16:01:44 +0000 (16:01 +0000)]
ARM: fixup more tests to specify the target more explicitly
This changes the tests that were targeting ARM EABI to explicitly specify the
environment rather than relying on the default. This breaks with the new
Windows on ARM support when running the tests on Windows where the default
environment is no longer EABI.
Take the opportunity to avoid a pointless redirect (helps when trying to debug
with providing a command line invocation which can be copy and pasted) and
removing a few greps in favour of FileCheck.
llvm-svn: 205541
Tim Northover [Thu, 3 Apr 2014 15:10:35 +0000 (15:10 +0000)]
ARM: tell LLVM about zext properties of ldrexb/ldrexh
Implementing this via ComputeMaskedBits has two advantages:
+ It actually works. DAGISel doesn't deal with the chains properly
in the previous pattern-based solution, so they never trigger.
+ The information can be used in other DAG combines, as well as the
trivial "get rid of truncs". For example if the trunc is in a
different basic block.
rdar://problem/
16227836
llvm-svn: 205540
Ed Maste [Thu, 3 Apr 2014 15:03:11 +0000 (15:03 +0000)]
Add explict dependencies on swig .i files for cmake builds
llvm.org/pr19316
llvm-svn: 205539
Daniel Sanders [Thu, 3 Apr 2014 14:14:22 +0000 (14:14 +0000)]
[mips] Add negative tests confirm that supported ISA's don't allow instructions added in later ISA's
Summary:
test/MC/Mips/<isa1>/invalid-<isa2>.s
Test that <isa1> does not support <isa2>'s instructions.
test/MC/Mips/<isa1>/invalid-<isa2>-xfail.s
Things that should be invalid but currently aren't. Will XPASS if any
become invalid.
Reviewers: matheusalmeida
Reviewed By: matheusalmeida
Differential Revision: http://llvm-reviews.chandlerc.com/D3262
llvm-svn: 205538
Daniel Sanders [Thu, 3 Apr 2014 13:21:51 +0000 (13:21 +0000)]
[mips] Implement ehb, ssnop, and pause in assembler
Summary: Add negative tests for pause
Reviewers: matheusalmeida
Reviewed By: matheusalmeida
Differential Revision: http://llvm-reviews.chandlerc.com/D3246
llvm-svn: 205537
Logan Chien [Thu, 3 Apr 2014 13:12:44 +0000 (13:12 +0000)]
Code cleanup (re-indent)
llvm-svn: 205536
Tim Northover [Thu, 3 Apr 2014 13:06:54 +0000 (13:06 +0000)]
ARM: skip cmpxchg failure barrier if ordering is monotonic.
The terminal barrier of a cmpxchg expansion will be either Acquire or
SequentiallyConsistent. In either case it can be skipped if the
operation has Monotonic requirements on failure.
rdar://problem/
15996804
llvm-svn: 205535
Alexey Samsonov [Thu, 3 Apr 2014 12:51:26 +0000 (12:51 +0000)]
[TSan] Fix a rare deadlock on multithreaded fork.
If a multi-threaded program calls fork(), TSan ignores all memory accesses
in the child to prevent deadlocks in TSan runtime. This is OK, as child is
probably going to call exec() as soon as possible. However, a rare deadlocks
could be caused by ThreadIgnoreBegin() function itself.
ThreadIgnoreBegin() remembers the current stack trace and puts it into the
StackDepot to report a warning later if a thread exited with ignores enabled.
Using StackDepotPut in a child process is dangerous: it locks a mutex on
a slow path, which could be already locked in a parent process.
The fix is simple: just don't put current stack traces to StackDepot in
ThreadIgnoreBegin() and ThreadIgnoreSyncBegin() functions if we're
running after a multithreaded fork. We will not report any
"thread exited with ignores enabled" errors in this case anyway.
Submitting this without a testcase, as I believe the standalone reproducer
is pretty hard to construct.
llvm-svn: 205534
Samuel Benzaquen [Thu, 3 Apr 2014 12:50:47 +0000 (12:50 +0000)]
Revert "Add support for named values in the parser."
This was submitted before it was ready.
This reverts commit
62060a01e095cf35eb9ca42a333752d12714f35c.
llvm-svn: 205533
Zoran Jovanovic [Thu, 3 Apr 2014 12:47:34 +0000 (12:47 +0000)]
Implementation of 16-bit microMIPS instructions MFHI and MFLO.
Differential Revision: http://llvm-reviews.chandlerc.com/D3141
llvm-svn: 205532
Alexey Samsonov [Thu, 3 Apr 2014 12:28:16 +0000 (12:28 +0000)]
[TSan] Fix a typo ThreadIgnoreSyncEnd. Found by inspection
llvm-svn: 205531
Daniel Sanders [Thu, 3 Apr 2014 12:13:36 +0000 (12:13 +0000)]
[mips] Add initial (experimental) MIPS-IV support.
Summary:
Adds the 'mips4' processor and a simple test of the ELF e_flags.
Patch by David Chisnall
His work was sponsored by: DARPA, AFRL
I made one small change to the testcase so that it uses
mips64-unknown-linux instead of mips4-unknown-linux.
This patch indirectly adds FeatureCondMov to FeatureMips64. This is ok
because it's supposed to be there anyway and it turns out that
FeatureCondMov is not a predicate of any instructions at the moment
(this is a bug that hasn't been noticed because there are no targets
without the conditional move instructions yet).
CC: theraven
Differential Revision: http://llvm-reviews.chandlerc.com/D3244
llvm-svn: 205530
Eric Christopher [Thu, 3 Apr 2014 12:11:51 +0000 (12:11 +0000)]
Fix for PR 19261:
llc doesn't generate nodes for unconditional fall-through branches for targets
without FastISel implementation (X86 has it, but can be disabled by
"-fast-isel=false") in SelectionDAGBuilder::visitBr().
So for line 4 in the following testcase
1: void foo(int i){
2: switch(i){
3: default:
4: break;
5: }
6: return;
7: }
there is no corresponding line in .debug_line section, and a debugger
cannot set a breakpoint at line 4.
Fix this by always emitting a branch when we're not optimizing and add a
testcase to ensure that there's code on every line we'd want to break.
Patch by Daniil Fukalov.
llvm-svn: 205529
Zoran Jovanovic [Thu, 3 Apr 2014 12:01:01 +0000 (12:01 +0000)]
MicroMIPS specific little endian fixup data byte ordering.
Differential Revision: http://llvm-reviews.chandlerc.com/D3245
llvm-svn: 205528
Daniel Jasper [Thu, 3 Apr 2014 12:00:33 +0000 (12:00 +0000)]
clang-format: Prefer an additional line-break over hanging indent.
Don't allow the RHS of an operator to be split over multiple
lines unless there is a line-break right after the operator.
Before:
if (aaaa && bbbbb || // break
cccc) {
}
After:
if (aaaa &&
bbbbb || // break
cccc) {
}
In most cases, this seems to increase readability.
llvm-svn: 205527
Daniel Jasper [Thu, 3 Apr 2014 12:00:27 +0000 (12:00 +0000)]
x
llvm-svn: 205526
Tim Northover [Thu, 3 Apr 2014 11:44:58 +0000 (11:44 +0000)]
ARM: expand atomic ldrex/strex loops in IR
The previous situation where ATOMIC_LOAD_WHATEVER nodes were expanded
at MachineInstr emission time had grown to be extremely large and
involved, to account for the subtly different code needed for the
various flavours (8/16/32/64 bit, cmpxchg/add/minmax).
Moving this transformation into the IR clears up the code
substantially, and makes future optimisations much easier:
1. an atomicrmw followed by using the *new* value can be more
efficient. As an IR pass, simple CSE could handle this
efficiently.
2. Making use of cmpxchg success/failure orderings only has to be done
in one (simpler) place.
3. The common "cmpxchg; did we store?" idiom can be exposed to
optimisation.
I intend to gradually improve this situation within the ARM backend
and make sure there are no hidden issues before moving the code out
into CodeGen to be shared with (at least ARM64/AArch64, though I think
PPC & Mips could benefit too).
llvm-svn: 205525
Stepan Dyatkovskiy [Thu, 3 Apr 2014 11:29:15 +0000 (11:29 +0000)]
PR19320:
The trouble as in ARMAsmParser, in ParseInstruction method. It assumes that ARM::R12 + 1 == ARM::SP.
It is wrong, since ARM::<Register> codes are generated by tablegen and actually could be any random numbers.
llvm-svn: 205524
Silviu Baranga [Thu, 3 Apr 2014 10:44:27 +0000 (10:44 +0000)]
[ARM] When generating a vpaddl node the input lane type is not always the type of the
add operation since extract_vector_elt can perform an extend operation. Get the input lane
type from the vector on which we're performing the vpaddl operation on and extend or
truncate it to the output type of the original add node.
llvm-svn: 205523
Sasa Stankovic [Thu, 3 Apr 2014 10:37:45 +0000 (10:37 +0000)]
[mips] Extend MipsMCExpr class to handle %higher(sym1 - sym2 + const) and
%highest(sym1 - sym2 + const) relocations. Remove "ABS_" from VK_Mips_HI
and VK_Mips_LO enums in MipsMCExpr, to be consistent with VK_Mips_HIGHER
and VK_Mips_HIGHEST.
This change also deletes test file test/MC/Mips/higher_highest.ll and moves
its CHECK's to the new test file test/MC/Mips/higher-highest-addressing.s.
The deleted file tests that R_MIPS_HIGHER and R_MIPS_HIGHEST relocations are
emitted in the .o file. Since it uses -force-mips-long-branch option, it was
created when MipsLongBranch's implementation was emitting R_MIPS_HIGHER and
R_MIPS_HIGHEST relocations in the .o file. It was disabled when MipsLongBranch
started to directly calculate offsets.
Differential Revision: http://llvm-reviews.chandlerc.com/D3230
llvm-svn: 205522