121759 Commits

Author SHA1 Message Date
Joseph Tremoulet
226889eb73 [WinEH] Add cleanupendpad instruction
Summary:
Add a `cleanupendpad` instruction, used to mark exceptional exits out of
cleanups (for languages/targets that can abort a cleanup with another
exception).  The `cleanupendpad` instruction is similar to the `catchendpad`
instruction in that it is an EH pad which is the target of unwind edges in
the handler and which itself has an unwind edge to the next EH action.
The `cleanupendpad` instruction, similar to `cleanupret` has a `cleanuppad`
argument indicating which cleanup it exits.  The unwind successors of a
`cleanuppad`'s `cleanupendpad`s must agree with each other and with its
`cleanupret`s.

Update WinEHPrepare (and docs/tests) to accomodate `cleanupendpad`.

Reviewers: rnk, andrew.w.kaylor, majnemer

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D12433

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246751 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 09:09:43 +00:00
Igor Breger
d951d3c8df AVX512: Implemented encoding and intrinsics for vplzcntq, vplzcntd, vpconflictq, vpconflictd
Added tests for intrinsics and encoding.

Differential Revision: http://reviews.llvm.org/D11931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246750 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 09:05:31 +00:00
NAKAMURA Takumi
d0e460175a Tweak llvm/test/tools/gold/X86/parallel.ll to run with pthread-unaware ld.gold on Linux.
If ld.gold is configured without --enable-thread, ld.gold might not load libpthread.so.
Preloading LLVMgold.so loads also libpthread.so.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246739 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-03 00:48:59 +00:00
JF Bastien
6feb333f9f [MergeFuncs] Efficiently defer functions on merge
Summary:
This patch introduces a side table in Merge Functions to
efficiently remove functions from the function set when functions
they refer to are merged. Previously these functions would need to
be compared lg(N) times to find the appropriate FunctionNode in the
tree to defer. With the recent determinism changes, this comparison
is more expensive. In addition, the removal function would not always
actually remove the function from the set (i.e. after remove(F),
there would sometimes still be a node in the tree which contains F).

With these changes, these functions are properly deferred, and so more
functions can be merged. In addition, when there are many merged
functions (and thus more deferred functions), there is a speedup:

chromium: 48678 merged -> 49380 merged; 6.58s -> 5.49s
libxul.so: 41004 merged -> 41030 merged; 8.02s -> 6.94s
mysqld: 1607 merged -> 1607 merged (same); 0.215s -> 0.212s (probably noise)

Author: jrkoenig
Reviewers: jfb, dschuff
Subscribers: llvm-commits, nlewycky
Differential revision: http://reviews.llvm.org/D12537

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246735 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 23:55:23 +00:00
Kostya Serebryany
8f6c191d6c [libFuzzer] deprecate the -tokens flag. This was a bad idea because the corpus with this flag contains encrypted inputs, not the real inputs, which complicates interoperation with other fuzzers. Instead we'll need to implement AFL dictionary support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246734 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 23:27:39 +00:00
Ahmed Bougacha
1522e8d8f8 [X86] Require 32-byte alignment for 32-byte VMOVNTs.
We used to accept (and even test, and generate) 16-byte alignment
for 32-byte nontemporal stores, but they require 32-byte alignment,
per SDM. Found by inspection.

Instead of hardcoding 16 in the patfrag, check for natural alignment.
Also fix the autoupgrade and the various tests.

Also, use explicit -mattr instead of -mcpu: I stared at the output
several minutes wondering why I get 2x movntps for the unaligned
case (which is the ideal output, but needs some work: see FIXME),
until I remembered corei7-avx implies +slow-unaligned-mem-32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246733 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 23:25:39 +00:00
Douglas Katzman
aa603526a1 Add Myriad into enum VendorType
Differential Revision: http://reviews.llvm.org/D12540

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246732 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 23:11:25 +00:00
Ahmed Bougacha
6ebb592b01 [X86] Cleanup nontemporal tests a little. NFC.
Also: add a missing test for movntiq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246730 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:47:09 +00:00
Justin Bogner
8559c49f4a IR: Remove an unused AssemblyWriter constructor. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246729 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:46:15 +00:00
Kostya Serebryany
8193d9328e [libFuzzer] remove the section about '-tokens' as I am going to deprecate this option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246728 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:44:46 +00:00
Philip Reames
a884848a9a [RewriteStatepointsForGC] Delete stale comment [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246722 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:35:42 +00:00
Philip Reames
90fa80d597 [RewriteStatepointsForGC] Pull a function out of anon namespace [NFC]
Thanks to David Blaikie for noticing in previous commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246721 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:30:53 +00:00
Justin Bogner
d034925a34 IR: Remove a redundant function. NFC
Function::print isn't interestingly different from Value::print. Just
let the only caller (in PrintCallGraphPass) call the Value version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246720 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:28:47 +00:00
Ahmed Bougacha
074165218d [X86] Cleanup nontemporal fragments. NFCI.
We can chain other fragments to avoid repeating conditions.
This also fixes a potential bug (that realistically can't happen),
where we would match indexed nontemporal stores for i32/i64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246719 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:27:38 +00:00
Philip Reames
3f945c295e [RewriteStatepointsForGC] Bugfix for change 246133
Fix a bug in change 246133. I didn't handle the case where we had a cycle in the use graph and could add an instruction we were about to erase back on to the worklist. Oddly, I have not been able to write a small test case for this, even with the AssertingVH added. I have confirmed the basic theory for the fix on a large failing example, but all attempts to reduce that to something appropriate for a test case have failed.

Differential Revision: http://reviews.llvm.org/D12575



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246718 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 22:25:07 +00:00
Philip Reames
774bfb2915 Fix release build warning for unused function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246717 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:57:17 +00:00
Philip Reames
84b364d1a2 [RewriteStatepointsForGC] Improve debug output [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246713 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:11:44 +00:00
Hal Finkel
2551be3865 [PowerPC] Cleanup cost model for unaligned vector loads/stores
I'm adding a regression test to better cover code generation for unaligned
vector loads and stores, but there's no functional change to the code
generation here. There is an improvement to the cost model for unaligned vector
loads and stores, mostly for QPX (for which we were not previously accounting
for the permutation-based loads), and the cost model implementation is cleaner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246712 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:03:28 +00:00
Douglas Katzman
3d7575d7e2 Move twice-repeated clang path operation into a new function.
And make it more robust in the edge case of exactly "./" as input.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246711 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 21:02:10 +00:00
Piotr Padlewski
2ab58354ab Small docs fix
http://reviews.llvm.org/D12572

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246705 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 20:33:16 +00:00
Reid Kleckner
5ef0a653de [lit] Add basic flaky test retry functionality
The plan is to use this for the sanitizer test suite on Windows.  See
PR24554 for more details on why we need this.

Tested manually by injecting rand() into a sanitizer test and watching
what it does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246704 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 20:32:41 +00:00
Piotr Padlewski
cd0a59d1aa assuem(X) handling in GVN bugfix
There was infinite loop because it was trying to change assume(true) into
assume(true)
Also added handling when assume(false) appear

http://reviews.llvm.org/D12516

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246697 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 20:00:03 +00:00
Piotr Padlewski
782ac282c5 Constant propagation after hitting assume(cmp) bugfix
Last time code run into assertion `BBE.isSingleEdge()` in
lib/IR/Dominators.cpp:200.

http://reviews.llvm.org/D12170

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246696 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:59:59 +00:00
Piotr Padlewski
596432ddc9 Constant propagation after hiting llvm.assume
After hitting @llvm.assume(X) we can:
- propagate equality that X == true
- if X is icmp/fcmp (with eq operation), and one of operand
  is constant we can change all variables with constants in the same BasicBlock

http://reviews.llvm.org/D11918

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246695 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:59:53 +00:00
Benjamin Kramer
7c393ccd97 [RemoveDuplicatePHINodes] Start over after removing a PHI.
This makes RemoveDuplicatePHINodes more effective and fixes an assertion
failure. Triggering the assertions requires a DenseSet reallocation
so this change only contains a constructive test.

I'll explain the issue with a small example. In the following function
there's a duplicate PHI, %4 and %5 are identical. When this is found
the DenseSet in RemoveDuplicatePHINodes contains %2, %3 and %4.

define void @F() {
  br label %1

; <label>:1                                       ; preds = %1, %0
  %2 = phi i32 [ 42, %0 ], [ %4, %1 ]
  %3 = phi i32 [ 42, %0 ], [ %5, %1 ]
  %4 = phi i32 [ 42, %0 ], [ 23, %1 ]
  %5 = phi i32 [ 42, %0 ], [ 23, %1 ]
  br label %1
}

after RemoveDuplicatePHINodes runs the function looks like this. %3 has
changed and is now identical to %2, but RemoveDuplicatePHINodes never
saw this.

define void @F() {
  br label %1

; <label>:1                                       ; preds = %1, %0
  %2 = phi i32 [ 42, %0 ], [ %4, %1 ]
  %3 = phi i32 [ 42, %0 ], [ %4, %1 ]
  %4 = phi i32 [ 42, %0 ], [ 23, %1 ]
  br label %1
}

If the DenseSet does a reallocation now it will reinsert all
keys and stumble over %3 now having a different hash value than it had
when inserted into the map for the first time. This change clears the
set whenever a PHI is deleted and starts the progress from the
beginning, allowing %3 to be deleted and avoiding inconsistent DenseSet
state. This potentially has a negative performance impact because
it rescans all PHIs, but I don't think that this ever makes a difference
in practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246694 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:52:23 +00:00
Sanjay Patel
97cac33e22 fix underline
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246693 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:35:31 +00:00
Sanjay Patel
87518392a4 use "unpredictable" metadata in fast-isel when splitting compares
This patch uses the metadata defined in D12341 to avoid creating an unpredictable branch.

Differential Revision: http://reviews.llvm.org/D12342



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246692 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:23:23 +00:00
Sanjay Patel
9f33e3748e use "unpredictable" metadata in SelectionDAG when splitting compares
This patch uses the metadata defined in D12341 to avoid creating an unpredictable branch.

Differential Revision: http://reviews.llvm.org/D12343



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246691 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:17:25 +00:00
Kostya Serebryany
580504f120 [libFuzzer] honour -only_ascii=1 when reading the initial corpus. Also, remove ugly #ifdef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246689 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:08:08 +00:00
Sanjay Patel
1cded9afe4 add unpredictable metadata type for control flow
This patch defines 'unpredictable' metadata. This metadata can be used to signal to the optimizer
or backend that a branch or switch is unpredictable, and therefore, it's probably better to not
split a compound predicate into multiple branches such as in CodeGenPrepare::splitBranchCondition().

This was discussed in:
https://llvm.org/bugs/show_bug.cgi?id=23827

Dependent patches to alter codegen and expose this in clang to follow.

Differential Revision; http://reviews.llvm.org/D12341


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246688 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 19:06:43 +00:00
Ahmed Bougacha
cced5262c4 [AArch64] More consistently separate asm opc and operands with '\t'.
Somehow missed these in r246686.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246687 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 18:52:54 +00:00
Ahmed Bougacha
15f4acb0b1 [AArch64] Consistently separate asm opc and operands with '\t'.
Some of the instructions use ' ', which drives OCD-me nuts.
Let's put an end to this.

NFC-ish: hopefully nobody cares about whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246686 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 18:38:36 +00:00
Justin Bogner
a2c5caefb3 test: Only warn about missing substitutions for required tools
Every time lit is invoked, I get warnings like so:

  lit.py: lit.cfg:286: note: Did not find llvm-go in /Users/bogner/build/llvm/./bin
  lit.py: lit.cfg:286: note: Did not find Kaleidoscope-Ch3 in /Users/bogner/build/llvm/./bin

Since these tools are only built in certain configs, these warnings
are superfluous. Change it so that we only warn about tools that are
built in all configs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246684 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 18:03:01 +00:00
Justin Bogner
984b15d7ca IR: Invert a condition to make it more legible. NFC
Also updates the style to more modern conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246681 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 17:54:41 +00:00
James Molloy
2616a82223 [ValueTracking] Minor comment change in test
This test was updated in r246678 - fix a copypasta in a comment noticed post-commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246679 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 17:29:54 +00:00
James Molloy
983cfca15d [ValueTracking] Look through casts when both operands are casts.
We only looked through casts when one operand was a constant. We can also look through casts when both operands are non-constant, but both are in fact the same cast type. For example:

%1 = icmp ult i8 %a, %b
%2 = zext i8 %a to i32
%3 = zext i8 %b to i32
%4 = select i1 %1, i32 %2, i32 %3

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246678 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 17:25:25 +00:00
Davide Italiano
a1bc1c274d [llvm-reaodbj] Simplify code. No functional change (intended).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246676 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 16:53:25 +00:00
Hal Finkel
3fe476e178 [PowerPC] Don't always consider P8Altivec-only masks in LowerVECTOR_SHUFFLE
LowerVECTOR_SHUFFLE needs to decide whether to pass a vector shuffle off to the
TableGen-generated matching code, and it does this by testing the same
predicates used by the TableGen files. Unfortunately, when we added new
P8Altivec-only predicates, we started universally testing them in
LowerVECTOR_SHUFFLE, and if then matched when targeting a system prior to a P8,
we'd end up with a selection failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246675 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 16:52:37 +00:00
Frederic Riss
ef8ad01b02 Reapply r246012 [dsymutil] Emit real dSYM companion binaries.
With a fix for big endian machines. Thanks to Daniel Sanders for the debugging!

Original commit message:

The binaries containing the linked DWARF generated by dsymutil are not
standard relocatable object files like emitted did previsously. They should be
dSYM companion files, which means they have a different file type in the
header, but also a couple other peculiarities:
 - they contain the segments and sections from the original binary in their
load commands, but not the actual contents. This means they get an address
and a size, but their offset is always 0 (but these are not virtual sections)
 - they also conatin all the defined symbols from the original binary

This makes MC a really bad fit to emit these kind of binaries. The approach
that was used in this patch is to leverage MC's section layout for the
debug sections, but to use a replacement for MachObjectWriter that lives
in MachOUtils.cpp. Some of the low-level helpers from MachObjectWriter
were reused too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246673 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 16:49:13 +00:00
Davide Italiano
885eb98ce3 [llvm-readobj] MachO: Dump segment command.
Example output:

File: <stdin>
Format: Mach-O arm
Arch: arm
AddressSize: 32bit
Segment {
  Cmd: LC_SEGMENT
  Name:
  Size: 260
  vmaddr: 0x0
  vmsize: 0x10
  fileoff: 408
  filesize: 408
  maxprot: rwx
  initprot: rwx
  nsects: 3
  flags: 0x0
}

Differential Revision:	 http://reviews.llvm.org/D12542


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246665 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 16:24:24 +00:00
NAKAMURA Takumi
074eea0532 MCAssembler.h: Prune unused \param since r246604. [-Wdocumentation]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246664 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 16:21:27 +00:00
Sanjay Patel
ec44710063 [x86] fix allowsMisalignedMemoryAccesses() for 8-byte and smaller accesses
This is a continuation of the fix from:
http://reviews.llvm.org/D10662

and discussion in:
http://reviews.llvm.org/D12154

Here, we distinguish slow unaligned SSE (128-bit) accesses from slow unaligned
scalar (64-bit and under) accesses. Other lowering (eg, getOptimalMemOpType) 
assumes that unaligned scalar accesses are always ok, so this changes 
allowsMisalignedMemoryAccesses() to match that behavior.

Differential Revision: http://reviews.llvm.org/D12543


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246658 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 15:42:49 +00:00
Rafael Espindola
3c4c9334b2 Pass a symbol table to getRelocationSymbol instead of returning one.
This removes a report_fatal_error from library and avoids checking a
section property for every section entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246656 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 15:07:39 +00:00
Asaf Badouh
05859c7cbb [X86][AVX512VLBW] add support in byte shift and SAD
add byte shift left/right
add SAD - compute sum of absolute differences

Differential Revision: http://reviews.llvm.org/D12479

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246654 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 14:21:54 +00:00
Chad Rosier
f8f78cdf6d Add newline to test. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246653 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 14:06:16 +00:00
Joseph Tremoulet
16c6479624 [TableGen] Allow TokenTy in intrinsic signatures
Summary:
Add the necessary plumbing so that llvm_token_ty can be used as an
argument/return type in intrinsic definitions and correspondingly require
TokenTy in function types.  TokenTy is an opaque type that has no target
lowering, but can be used in machine-independent intrinsics.  It is
required for the upcoming llvm.eh.padparam intrinsic.

Reviewers: majnemer, rnk

Subscribers: stoklund, llvm-commits

Differential Revision: http://reviews.llvm.org/D12532

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246651 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 13:36:25 +00:00
Igor Breger
1b50f7132b AVX512: Implemented encoding and intrinsics for VGETMANTPD/S , VGETMANTSD/S instructions
Added tests for intrinsics and encoding.

Differential Revision: http://reviews.llvm.org/D11593

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246642 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 11:18:55 +00:00
NAKAMURA Takumi
3a491e5d33 Suppress llvm/test/tools/gold/X86/parallel.ll while investigating.
For me,

  Program received signal SIGSEGV, Segmentation fault.
  0x00007ffff7deb0dc in _dl_fixup () from /lib64/ld-linux-x86-64.so.2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246641 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 10:59:21 +00:00
Igor Breger
191108c6b8 AVX512: Implemented encoding and intrinsics for vshufps/d.
Added tests for intrinsics and encoding.

Differential Revision: http://reviews.llvm.org/D11709

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246640 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 10:50:58 +00:00
James Molloy
6ce50a6980 [LV] Don't bail to MiddleBlock if a runtime check fails, bail to ScalarPH instead
We were bailing to two places if our runtime checks failed. If the initial overflow check failed, we'd go to ScalarPH. If any other check failed, we'd go to MiddleBlock. This caused us to have to have an extra PHI per induction and reduction as the vector loop's exit block was not dominated by its latch.

There's no need to have this behavior - if we just always go to ScalarPH we can get rid of a bunch of complexity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246637 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-02 10:15:39 +00:00