Jozef Kolek [Tue, 12 May 2015 17:39:32 +0000 (17:39 +0000)]
[mips][microMIPSr6] Implement SELEQZ and SELNEZ instructions
This patch implements SELEQZ and SELNEZ instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8497
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237158
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 12 May 2015 17:31:17 +0000 (17:31 +0000)]
YAML: Fix typos. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237157
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 12 May 2015 17:20:03 +0000 (17:20 +0000)]
Reimplement heuristic for estimating complete-unroll optimization effects.
Summary:
This patch reimplements heuristic that tries to estimate optimization beneftis
from complete loop unrolling.
In this patch I kept the minimal changes - e.g. I removed code handling
branches and folding compares. That's a promising area, but now there
are too many questions to discuss before we can enable it.
Test Plan: Tests are included in the patch.
Reviewers: hfinkel, chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8816
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237156
91177308-0d34-0410-b5e6-
96231b3b80d8
Petar Jovanovic [Tue, 12 May 2015 17:14:05 +0000 (17:14 +0000)]
[Mips] Return false for isFPCloseToIncomingSP()
On Mips, frame pointer points to the same side of the frame as the stack
pointer. This function is used to decide where to put register scavenging
spill slot. So far, it was put on the wrong side of the frame, and thus it
was too far away from $fp when frame was larger than 2^15 bytes.
Patch by Vladimir Radosavljevic.
http://reviews.llvm.org/D8895
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237153
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 17:13:02 +0000 (17:13 +0000)]
R600/SI: add pass to mark CF live ranges as non-spillable
Spilling can insert instructions almost anywhere, and this can mess
up control flow lowering in a multitude of ways, due to instruction
reordering. Let's sort this out the easy way: never spill registers
involved with control flow, i.e. saved EXEC masks.
Unfortunately, this does not work at all with optimizations disabled,
as the register allocator ignores spill weights. This should be
addressed in a future commit.
The test was reduced from the "stacks" shader of [1]. Some issues
trigger the machine verifier while another one is checked manually.
[1] http://madebyevan.com/webgl-path-tracing/
v2: only insert pass with optimizations enabled, merge test runs.
Patch by: Grigori Goronzy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237152
91177308-0d34-0410-b5e6-
96231b3b80d8
Sunil Srivastava [Tue, 12 May 2015 16:47:30 +0000 (16:47 +0000)]
Changed renaming of local symbols by inserting a dot vefore the numeric suffix.
One code change and several test changes to match that
details in http://reviews.llvm.org/D9481
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237150
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Tue, 12 May 2015 16:45:53 +0000 (16:45 +0000)]
Delete dead code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237148
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Tue, 12 May 2015 15:45:56 +0000 (15:45 +0000)]
Comment disambiguation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237146
91177308-0d34-0410-b5e6-
96231b3b80d8
Keith Walker [Tue, 12 May 2015 15:25:08 +0000 (15:25 +0000)]
[DWARF] Add CIE header fields address_size and segment_size when generating dwarf-4
The DWARF-4 specification added 2 new fields in the CIE header called
address_size and segment_size.
Create these 2 new fields when generating dwarf-4 CIE entries, print out
the new fields when dumping the CIE and update tests
Differential Revision: http://reviews.llvm.org/D9558
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237145
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 May 2015 15:15:55 +0000 (15:15 +0000)]
use 'auto' to improve readability; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237144
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 15:00:53 +0000 (15:00 +0000)]
R600/SI: Update tablegen defs to avoid restoring spilled sgprs to m0
We had code to do this in SIRegisterInfo::eliminateFrameIndex(), but
it is easier to just change the definition of SI_SPILL_S32_RESTORE to
only allow numbered sgprs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237143
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 15:00:52 +0000 (15:00 +0000)]
R600/SI: Remove M0Reg register class
It is no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237142
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 15:00:49 +0000 (15:00 +0000)]
R600/SI: Remove explicit m0 operand from DS instructions
Instead add m0 as an implicit operand. This helps avoid spills
of the m0 register in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237141
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 15:00:46 +0000 (15:00 +0000)]
R600/SI: Remove explicit m0 operand from v_interp instructions
Instead add m0 as an implicit operand. This helps avoid spills
of the m0 register in some cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237140
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 May 2015 14:52:42 +0000 (14:52 +0000)]
fix typos, grammar; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237139
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 14:18:16 +0000 (14:18 +0000)]
R600/SI: Make sendmsg test more strict
We want to make sure that the m0 copies are being cse'd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237134
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 14:18:14 +0000 (14:18 +0000)]
R600/SI: Remove explicit m0 operand from s_sendmsg
Instead add m0 as an implicit operand. This allows us to avoid using
the M0Reg register class and eliminates a number of unnecessary spills
when using s_sendmsg instructions. This impacts one shader in the
shader-db:
SGPRS: 48 -> 40 (-16.67 %)
VGPRS: 112 -> 108 (-3.57 %)
Code Size: 40132 -> 38796 (-3.33 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Scratch: 2048 -> 0 (-100.00 %) bytes per wave
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237133
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 12 May 2015 14:18:11 +0000 (14:18 +0000)]
R600/SI: Replace TRI->getRegClass(Reg) with TRI->getPhysRegClass(Reg)
TRI->getRegClass() takes a register class ID, not a register. We were
using this incorrectly in a few places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237132
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 12 May 2015 13:25:46 +0000 (13:25 +0000)]
AVX-512, X86: Added lowering for shift operations for SKX.
The other changes in the LowerShift() are not functional,
just to make the code more convenient.
So, the functional changes for SKX only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237129
91177308-0d34-0410-b5e6-
96231b3b80d8
John Brawn [Tue, 12 May 2015 13:13:38 +0000 (13:13 +0000)]
[ARM] Use AEABI aligned function variants
AEABI defines aligned variants of memcpy etc. that can be faster than
the default version due to not having to do alignment checks. When
emitting target code for these functions make use of these aligned
variants if possible. Also convert memset to memclr if possible.
Differential Revision: http://reviews.llvm.org/D8060
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237127
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Tue, 12 May 2015 13:12:14 +0000 (13:12 +0000)]
Reverse ordering of base and derived pointer during safepoint lowering.
According to the documentation in StackMap section for the safepoint we should have:
"The first Location in each pair describes the base pointer for the object. The second is the derived pointer actually being relocated."
But before this change we emitted them in reverse order - derived pointer first, base pointer second.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237126
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 12 May 2015 12:34:22 +0000 (12:34 +0000)]
[X86] Remove useless target specific combine on TRUNCATE dag nodes.
Before revision 171146, function 'PerformTruncateCombine' used to perform
a premature lowering of TRUNCATE dag nodes.
Revision 171146 then moved all the logic implemented by PerformTruncateCombine
to a custom lowering hook. However, that revision forgot to delete
function PerformTruncateCombine from the code.
This patch removes function 'PerformTruncateCombine' since it has no effect
on the SelectionDAG. No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237122
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Tue, 12 May 2015 12:29:17 +0000 (12:29 +0000)]
[mips][FastISel] Handle calls with non legal types i8 and i16.
Summary: Allow calls with non legal integer types based on i8 and i16 to be processed by mips fast-isel.
Based on a patch by Reed Kotler.
Test Plan:
"Make check" test forthcoming.
Test-suite passes at O0/O2 and with mips32 r1/r2
Reviewers: rkotler, dsanders
Subscribers: llvm-commits, rfuhler
Differential Revision: http://reviews.llvm.org/D6770
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237121
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Tue, 12 May 2015 12:17:11 +0000 (12:17 +0000)]
[mips][FastISel] Simplify callabi.ll by using multiple check prefixes.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9635
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237119
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Tue, 12 May 2015 12:08:31 +0000 (12:08 +0000)]
[mips][FastISel] Allow computation of addresses from constant expressions.
Summary:
Try to compute addresses when the offset from a memory location is a constant
expression.
Based on a patch by Reed Kotler.
Test Plan:
Passes test-suite for -O0/O2 and mips 32 r1/r2
Reviewers: rkotler, dsanders
Subscribers: llvm-commits, aemerson, rfuhler
Differential Revision: http://reviews.llvm.org/D6767
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237117
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Tue, 12 May 2015 10:33:58 +0000 (10:33 +0000)]
Change TargetParser enum names to avoid macro conflicts (llvm)
sys/time.h on Solaris (and possibly other systems) defines "SEC" as "1"
using a cpp macro. The result is that this fails to compile.
Fixes https://llvm.org/PR23482
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237112
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 12 May 2015 09:47:23 +0000 (09:47 +0000)]
AVX-512: asm parser errors check
I reverted the error check that was removed in 236416.
I put the it in a separate file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237107
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 12 May 2015 09:36:52 +0000 (09:36 +0000)]
AVX-512: select operation for i1 vectors
like: select i1 %cond, <16 x i1> %a, <16 x i1> %b.
I added pseudo-CMOV patterns to resolve the "select".
Added tests for KNL and SKX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237106
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Tue, 12 May 2015 07:33:07 +0000 (07:33 +0000)]
[X86] DAGCombine should not assume arbitrary vector types are simple
The X86-specific DAGCombine for stores should not assume vector types are always simple.
This fixes PR23476.
Differential Revision: http://reviews.llvm.org/D9659
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237097
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 12 May 2015 06:09:57 +0000 (06:09 +0000)]
Remove unnecessary forward declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237093
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 12 May 2015 05:25:10 +0000 (05:25 +0000)]
Remove unnecessary variables by folding calls into for loop header. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237090
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 12 May 2015 01:58:34 +0000 (01:58 +0000)]
[lib/Fuzzer] remove the -dfsan=1 flag, just use -use_traces=1 (w/ or w/o dfsan)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237083
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 12 May 2015 01:43:20 +0000 (01:43 +0000)]
[lib/Fuzzer] detach the pulse thread instad of joining it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237082
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 12 May 2015 01:26:05 +0000 (01:26 +0000)]
Migrate existing backends that care about software floating point
to use the information in the module rather than TargetOptions.
We've had and clang has used the use-soft-float attribute for some
time now so have the backends set a subtarget feature based on
a particular function now that subtargets are created based on
functions and function attributes.
For the one middle end soft float check go ahead and create
an overloadable TargetLowering::useSoftFloat function that
just checks the TargetSubtargetInfo in all cases.
Also remove the command line option that hard codes whether or
not soft-float is set by using the attribute for all of the
target specific test cases - for the generic just go ahead and
add the attribute in the one case that showed up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237079
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Tue, 12 May 2015 00:13:51 +0000 (00:13 +0000)]
Fixing memory leak
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237072
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 11 May 2015 23:47:30 +0000 (23:47 +0000)]
Refactoring gc_relocate related code in CodeGenPrepare.cpp
Summary:
The original code inserted new instructions by following a
Create->Remove->ReInsert flow. This patch removes the unnecessary
Remove->ReInsert part by setting up the InsertPoint correctly at the
very beginning. This change does not introduce any functionality change.
Patch by Chen Li!
Reviewers: reames, AndyAyers, sanjoy
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9687
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237070
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 11 May 2015 23:47:27 +0000 (23:47 +0000)]
Rename variables in gc_relocate related functions to follow LLVM's naming conventions.
Summary:
This patch is to rename some variables to CamelCase in gc_relocate
related functions. There is no functionality change.
Patch by Chen Li!
Reviewers: reames, AndyAyers, sanjoy
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9681
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237069
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 11 May 2015 23:25:28 +0000 (23:25 +0000)]
[lib/Fuzzer] don't record traces when trace collection is off
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237067
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Mon, 11 May 2015 23:09:46 +0000 (23:09 +0000)]
[MemCpyOpt] Look at any dependency -not just source- for memset+memcpy.
This fixes another miscompile introduced by r235232: when there was a
dependency on the memcpy destination other than the memset, we would
ignore it, because we only looked at the source dependency.
It was a mistake to use SrcDepInfo. Instead, just use DepInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237066
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 11 May 2015 23:09:25 +0000 (23:09 +0000)]
Simplify a return expression and an access to an alloca's allocated type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237065
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 11 May 2015 23:06:02 +0000 (23:06 +0000)]
[WinEH] Handle nested landing pads that return directly to the parent function.
Differential Revision: http://reviews.llvm.org/D9684
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237063
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 11 May 2015 22:41:07 +0000 (22:41 +0000)]
Add more missing #includes, found by modules build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237062
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 11 May 2015 22:32:06 +0000 (22:32 +0000)]
Add missing #include, found by modules build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237061
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 11 May 2015 22:31:40 +0000 (22:31 +0000)]
Add missing #includes, found by modules build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237060
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 11 May 2015 22:20:48 +0000 (22:20 +0000)]
Readdress r236990, use of static members on a non-static variable.
The TargetRegistry is just a namespace-like class, instantiated in one
place to use a range-based for loop. Instead, expose access to the
registry via a range-based 'targets()' function instead. This makes most
uses a bit awkward/more verbose - but eventually we should just add a
range-based find_if function which will streamline these functions. I'm
happy to mkae them a bit awkward in the interim as encouragement to
improve the algorithms in time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237059
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 11 May 2015 22:17:13 +0000 (22:17 +0000)]
Fix tablegen's PrintFatalError function to run registered file
cleanups.
Also, change code in tablegen which printed a message and then called
"exit(1)" to use PrintFatalError, instead.
This fixes instances where an empty output file was left behind after
a failed tablegen invocation, which would confuse subsequent ninja
runs into not attempting to rebuild.
Differential Revision: http://reviews.llvm.org/D9608
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237058
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 11 May 2015 21:31:51 +0000 (21:31 +0000)]
[lib/Fuzzer] when running multiple fuzzing processes, print something every 10 minutes to avoid buildbot timeouts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237054
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Mon, 11 May 2015 21:20:20 +0000 (21:20 +0000)]
Fix input validation issues in llvm-as/llvm-dis
Summary:
1. llvm-as/llvm-dis tools do not check for input filename length.
2. llvm-dis does not verify the `Streamer` variable against `nullptr` properly, so the `M` variable could be uninitialized (e.g. if the input file does not exist) leading to null dref.
Patch by Lenar Safin!
Reviewers: samsonov
Reviewed By: samsonov
Subscribers: samsonov, llvm-commits
Differential Revision: http://reviews.llvm.org/D9584
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237051
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 11 May 2015 21:16:27 +0000 (21:16 +0000)]
[lib/Fuzzer] rename FuzzerDFSan.cpp to FuzzerTraceState.cpp; update comments. NFC expected
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237050
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 11 May 2015 21:07:09 +0000 (21:07 +0000)]
propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC
This is a less ambitious version of:
http://reviews.llvm.org/rL236546
because that was reverted in:
http://reviews.llvm.org/rL236600
because it caused memory corruption that wasn't related to FMF
but was actually due to making nodes with 2 operands derive from a
plain SDNode rather than a BinarySDNode.
This patch adds the minimum plumbing necessary to use IR-level
fast-math-flags (FMF) in the backend without actually using
them for anything yet. This is a follow-on to:
http://reviews.llvm.org/rL235997
...which split the existing nsw / nuw / exact flags and FMF
into their own struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237046
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 11 May 2015 21:02:34 +0000 (21:02 +0000)]
[LoopIdiomRecognize] Transform backedge-taken count check into an assertion.
runOnCountable() allowed the caller to call on a loop without a
predictable backedge-taken count. Change the code so that only loops
with computable backdge-count can call this function, in order to catch
abuses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237044
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 11 May 2015 20:51:19 +0000 (20:51 +0000)]
[lib/Fuzzer] add a trace-based mutatation logic. Same idea as with DFSan-based mutator, but instead of relying on taint tracking, try to find the data directly in the input. More (logic and comments) to go.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237043
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 11 May 2015 20:45:11 +0000 (20:45 +0000)]
Fixing build warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237042
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 11 May 2015 19:41:19 +0000 (19:41 +0000)]
[WinEH] Update exception numbering to give handlers their own base state.
Differential Revision: http://reviews.llvm.org/D9512
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237014
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 11 May 2015 19:34:10 +0000 (19:34 +0000)]
group getNode() variants by purpose and add comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237013
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 11 May 2015 18:49:34 +0000 (18:49 +0000)]
[RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers
Summary:
In RewriteStatepointsForGC pass, we create a gc_relocate intrinsic for
each relocated pointer, and the gc_relocate has the same type with the
pointer. During the creation of gc_relocate intrinsic, llvm requires to
mangle its type. However, llvm does not support mangling of all possible
types. RewriteStatepointsForGC will hit an assertion failure when it
tries to create a gc_relocate for pointer to vector of pointers because
mangling for vector of pointers is not supported.
This patch changes the way RewriteStatepointsForGC pass creates
gc_relocate. For each relocated pointer, we erase the type of pointers
and create an unified gc_relocate of type i8 addrspace(1)*. Then a
bitcast is inserted to convert the gc_relocate to the correct type. In
this way, gc_relocate does not need to deal with different types of
pointers and the unsupported type mangling is no longer a problem. This
change would also ease further merge when LLVM erases types of pointers
and introduces an unified pointer type.
Some minor changes are also introduced to gc_relocate related part in
InstCombineCalls, CodeGenPrepare, and Verifier accordingly.
Patch by Chen Li!
Reviewers: reames, AndyAyers, sanjoy
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9592
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237009
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 11 May 2015 18:47:47 +0000 (18:47 +0000)]
LiveRangeCalc: Improve error messages on malformed IR
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237008
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 11 May 2015 17:40:54 +0000 (17:40 +0000)]
CodeGen: Make MachineInstr::untieRegOperand() a public function
This makes it easier to update in place instructions with tied operands.
Differential Revision: http://reviews.llvm.org/D9231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237005
91177308-0d34-0410-b5e6-
96231b3b80d8
Pirama Arumuga Nainar [Mon, 11 May 2015 17:14:39 +0000 (17:14 +0000)]
[X86] Updates to X86 backend for f16 promotion
Summary:
r235215 adds support for f16 to be considered as a load/store type and
promote f16 operations to f32.
This patch has miscellaneous fixes for the X86 backend so all f16
operations are handled:
1. Set loadextaction for f16 vectors to expand.
2. Handle FP_EXTEND in a switch statement when handling v2f32
3. Do not fold (FP_TO_SINT (load f16)) into FP_TO_INT*_IN_MEM or
(store (SINT_TO_FP )) to a FILD.
Tests included.
Reviewers: ab, srhines, delena
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9092
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237004
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Mon, 11 May 2015 14:42:20 +0000 (14:42 +0000)]
Rip min/max pattern matching out of InstCombine and into
ValueTracking.
This matching functionality is useful in more than just InstCombine, so
make it available in ValueTracking.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236998
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 13:11:38 +0000 (13:11 +0000)]
Amends r236990, because I failed at hitting "save" before commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236991
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 13:10:17 +0000 (13:10 +0000)]
Replacing a range-based for loop with an old-style for loop. This code was previously causing a warning with MSVC about a compiler-generated local variable because TargetRegistry::begin() and end() are static member functions. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236990
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 12:45:53 +0000 (12:45 +0000)]
Silencing an MSVC warning: '<<' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236987
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 11 May 2015 09:10:14 +0000 (09:10 +0000)]
[Testsuite] Renumber metadata in ScopedNoAliasAA test to match CHECK lines
Summary:
Now it's much easier to follow what's happening in this test.
Also removed some unused metadata entries.
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9601
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236981
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 09:03:14 +0000 (09:03 +0000)]
AVX-512: Changed CC parameter in "cmp" intrinsic
from i8 to i32 according to the Intel Spec
by Igor Breger (igor.breger@intel.com)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236979
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 11 May 2015 08:30:28 +0000 (08:30 +0000)]
[Docs] Fix scoped noalias example
Summary:
As far as I understand the entire point of this example is to show that
if noalias is not a superset/equal to the alias.scope list on a scope
domain then load could reference locations that the store is not known
to not-alias i.e may alias.
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9598
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236977
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 May 2015 06:37:03 +0000 (06:37 +0000)]
[InstCombine/PowerPC] Fix single-precision QPX load/store replacement
The QPX single-precision load/store intrinsics have implied
truncation/extension from/to the declared value type of <4 x double> to the
memory type of <4 x float>. When we can prove the alignment of the pointer
argument, and thus replace the intrinsic with a regular load or store, we need
to load or store the correct data type (<4 x float>) instead of (<4 x double>).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236973
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 06:23:41 +0000 (06:23 +0000)]
Fixed compilation warning, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236972
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 06:05:05 +0000 (06:05 +0000)]
AVX-512: Added SKX instructions and intrinsics:
{add/sub/mul/div/} x {ps/pd} x {128/256} 2. max/min with sae
By Asaf Badouh (asaf.badouh@intel.com)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236971
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:33:27 +0000 (05:33 +0000)]
Make buildbots happy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236970
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:04:27 +0000 (05:04 +0000)]
[InstCombine] Canonicalize single element array store
Use the element type instead of the aggregate type.
Differential Revision: http://reviews.llvm.org/D9591
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236969
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:04:22 +0000 (05:04 +0000)]
[InstCombine] Canonicalize single element array load
Use the element type instead of the aggregate type.
Differential Revision: http://reviews.llvm.org/D9596
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236968
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 10 May 2015 14:23:52 +0000 (14:23 +0000)]
AVX-512: fixed UINT_TO_FP operation for 512-bit types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236955
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 10 May 2015 14:14:51 +0000 (14:14 +0000)]
[SelectionDAG] Fixed constant folding issue when legalised types are smaller then the folded type.
Found when testing with llvm-stress on i686 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236954
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Sun, 10 May 2015 13:45:05 +0000 (13:45 +0000)]
SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init
Second attempt; instead of using a named local variable, passing
arguments directly to `createSanitizerCtorAndInitFunctions` worked
on Windows.
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236951
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 10 May 2015 10:33:32 +0000 (10:33 +0000)]
AVX-512: fixed a bug in i1 vectors lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236947
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sun, 10 May 2015 00:53:41 +0000 (00:53 +0000)]
SystemZ: silence a GCC warning
warning: enumeral and non-enumeral type in conditional expression
Cast the 0 to the appropriate type. NFC. Identified by GCC 4.9.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236942
91177308-0d34-0410-b5e6-
96231b3b80d8
Tobias Grosser [Sat, 9 May 2015 09:08:56 +0000 (09:08 +0000)]
Add polly support to sort_includes.py
Changes:
- Add "isl/" as a system library prefix. Even though isl is regularly
imported into polly, it is still used like an external library.
- Add "json/" as a system library prefix. Polly uses json-cpp as external
library.
- Distinguish between llvm and subproject libraries. Always sort subprojects
before LLVM. This was already the case with clang, as 'clang' comes before
'llvm', but we also want 'polly' to be sorted before 'llvm'.
The sorting of headers that are not part of Polly or isl remains unchanged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236929
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 9 May 2015 05:59:00 +0000 (05:59 +0000)]
llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll: s/REQUIRE/REQUIRES/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236928
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Sat, 9 May 2015 03:13:37 +0000 (03:13 +0000)]
Fix MergeConsecutiveStore for non-byte-sized memory accesses.
The bug showed up as a compile-time assertion failure:
Assertion `NumBits >= MIN_INT_BITS && "bitwidth too small"' failed
when building msan tests on x86-64.
Prior to r236850, this bug was masked due to a bogus alignment check,
which also accidentally rejected non-byte-sized accesses. Afterwards,
an invalid ElementSizeBytes == 0 got further into the function, and
triggered the assertion failure.
It would probably be a good idea to allow it to handle merging stores
of unusual widths as well, but for now, to un-break it, I'm just
making the minimal fix.
Differential Revision: http://reviews.llvm.org/D9626
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236927
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Sat, 9 May 2015 00:56:07 +0000 (00:56 +0000)]
MachineCSE: Add a target query for the LookAheadLimit heurisitic
This is used to determine whether or not to CSE physical register
defs.
Differential Revision: http://reviews.llvm.org/D9472
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236923
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Sat, 9 May 2015 00:51:03 +0000 (00:51 +0000)]
[Fast-ISel] Don't mark the first use of a remat constant as killed.
When emitting something like 'add x, 1000' if we remat the 1000 then we should be able to
mark the vreg containing 1000 as killed. Given that we go bottom up in fast-isel, a later
use of 1000 will be higher up in the BB and won't kill it, or be impacted by the lower kill.
However, rematerialised constant expressions aren't generated bottom up. The local value save area
grows downwards. This means that if you remat 2 constant expressions which both use 1000 then the
first will kill it, then the second, which is *lower* in the BB will read a killed register.
This is the case in the attached test where the 2 GEPs both need to generate 'add x, 6680' for the constant offset.
Note that this commit only makes kill flag generation conservative. There's nothing else obviously wrong with
the local value save area growing downwards, and in fact it needs to for handling arbitrarily complex constant expressions.
However, it would be nice if there was a solution which would let us generate more accurate kill flags, or just kill flags completely.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236922
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 9 May 2015 00:10:25 +0000 (00:10 +0000)]
Fix compile error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236921
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 9 May 2015 00:02:06 +0000 (00:02 +0000)]
Revert r236912.
Author: dblaikie
Date: Fri May 8 17:47:50 2015
New Revision: 236912
URL: http://llvm.org/viewvc/llvm-project?rev=236912&view=rev
Log:
[opaque pointer type] Cleanup a few references to pointee types using nearby non-pointee types of the same value
& cleanup a convoluted return expression while I'm here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236919
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 8 May 2015 23:58:28 +0000 (23:58 +0000)]
[Target/ARM] Remove unused 'private' from class.
Differential Revision: http://reviews.llvm.org/D9611
Reviewed by: rengolin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236918
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Fri, 8 May 2015 23:52:00 +0000 (23:52 +0000)]
ScheduleDAGInstrs: In functions with tail calls PseudoSourceValues are not non-aliasing distinct objects
The code that builds the dependence graph assumes that two PseudoSourceValues
don't alias. In a tail calling function two FixedStackObjects might refer to the
same location. Worse 'immutable' fixed stack objects like function arguments are
not immutable and will be clobbered.
Change this so that a load from a FixedStackObject is not invariant in a tail
calling function and don't return a PseudoSourceValue for an instruction in tail
calling functions when building the dependence graph so that we handle function
arguments conservatively.
Fix for PR23459.
rdar://
20740035
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236916
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 22:47:50 +0000 (22:47 +0000)]
[opaque pointer type] Cleanup a few references to pointee types using nearby non-pointee types of the same value
& cleanup a convoluted return expression while I'm here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236912
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 8 May 2015 21:45:19 +0000 (21:45 +0000)]
[lib/Fuzzer] build tests that work well with dfsan also w/o dfsan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236909
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 8 May 2015 21:30:55 +0000 (21:30 +0000)]
[lib/Fuzzer] use -fsanitize-coverage=trace-cmp when building LLVM with LLVM_USE_SANITIZE_COVERAGE; in lib/Fuzzer try to reload the corpus to pick up new units from other processes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236906
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 8 May 2015 21:23:39 +0000 (21:23 +0000)]
Switch lowering: cluster adjacent fall-through cases even at -O0
It's cheap to do, and codegen is much faster if cases can be merged
into clusters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236905
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 8 May 2015 21:17:24 +0000 (21:17 +0000)]
Add a comment about DepthFirstIterator's skipchildren behavior
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236904
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Fri, 8 May 2015 21:04:27 +0000 (21:04 +0000)]
TargetParser: FPU/ARCH/EXT parsing refactory - NFC
This new class in a global context contain arch-specific knowledge in order
to provide LLVM libraries, tools and projects with the ability to understand
the architectures. For now, only FPU, ARCH and ARCH extensions on ARM are
supported.
Current behaviour it to parse from free-text to enum values and back, so that
all users can share the same parser and codes. This simplifies a lot both the
ASM/Obj streamers in the back-end (where this came from), and the front-end
parsers for command line arguments (where this is going to be used next).
The previous implementation, using .def/.h includes is deprecated due to its
inflexibility to be built without the backend support and for being too
cumbersome. As more architectures join this scheme, and as more features of
such architectures are added (such as hardware features, type sizes, etc) into
a full blown TargetDescription class, having a set of classes is the most
sane implementation.
The ultimate goal of this refactor both LLVM's and Clang's target description
classes into one unique interface, so that we can de-duplicate and standardise
the descriptions, as well as make it available for other front-ends, tools,
etc.
The FPU parsing for command line options in Clang has been converted to use
this new library and a number of aliases were added for compatibility:
* A bogus neon-vfpv3 alias (neon defaults to vfp3)
* armv5/v6
* {fp4/fp5}-{sp/dp}-d16
Next steps:
* Port Clang's ARCH/EXT parsing to use this library.
* Create a TableGen back-end to generate this information.
* Run this TableGen process regardless of which back-ends are built.
* Expose more information and rename it to TargetDescription.
* Continue re-factoring Clang to use as much of it as possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236900
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Fri, 8 May 2015 21:01:29 +0000 (21:01 +0000)]
Update Function::getContext documentation. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236899
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 20:46:54 +0000 (20:46 +0000)]
[Fast-ISel] Clear kill flags on registers replaced by updateValueMap.
When selecting an extract instruction, we don't actually generate code but instead work out which register we are reading, and rewrite uses of the extract def to the source register. This is done via updateValueMap,.
However, its possible that the source register we are rewriting *to* to also have uses. If those uses are after a kill of the value we are rewriting *from* then we have uses after a kill and the verifier fails.
This code checks for the case where the to register is also used, and if so it clears all kill on the from register. This is conservative, but better that always clearing kills on the from register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236897
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Fri, 8 May 2015 20:18:21 +0000 (20:18 +0000)]
[Hexagon] Generate more hardware loops
Refactored parts of the hardware loop pass to generate
more. Also, added more tests.
Differential Revision: http://reviews.llvm.org/D9568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236896
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 8 May 2015 18:58:55 +0000 (18:58 +0000)]
[BasicAA] Fix zext & sext handling
Summary:
There are several unhandled edge cases in BasicAA's GetLinearExpression
method. This changes fixes outstanding issues, including zext / sext of
a constant with the sign bit set, and the refusal to decompose zexts or
sexts of wrapping arithmetic.
Test Plan: Unit tests added in //q.ext.ll//.
Patch by Nick White.
Reviewers: hfinkel, sanjoy
Reviewed By: hfinkel, sanjoy
Subscribers: sanjoy, llvm-commits, hfinkel
Differential Revision: http://reviews.llvm.org/D6682
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236894
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 18:52:28 +0000 (18:52 +0000)]
Replace branch-to-unreachable with assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236893
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:37:49 +0000 (18:37 +0000)]
Fix a docs build break introduced by rL236888.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236891
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 18:29:42 +0000 (18:29 +0000)]
[X86] Fast-ISel was incorrectly always killing the source of a truncate.
A trunc from i32 to i1 on x86_64 generates an instruction such as
%vreg19<def> = COPY %vreg9:sub_8bit<kill>; GR8:%vreg19 GR32:%vreg9
However, the copy here should only have the kill flag on the 32-bit path, not the 64-bit one.
Otherwise, we are killing the source of the truncate which could be used later in the program.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236890
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:07:42 +0000 (18:07 +0000)]
Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware.
This changes the shape of the statepoint intrinsic from:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 unused, ...call args, i32 # deopt args, ...deopt args, ...gc args)
to:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 flags, ...call args, i32 # transition args, ...transition args, i32 # deopt args, ...deopt args, ...gc args)
This extension offers the backend the opportunity to insert (somewhat) arbitrary code to manage the transition from GC-aware code to code that is not GC-aware and back.
In order to support the injection of transition code, this extension wraps the STATEPOINT ISD node generated by the usual lowering lowering with two additional nodes: GC_TRANSITION_START and GC_TRANSITION_END. The transition arguments that were passed passed to the intrinsic (if any) are lowered and provided as operands to these nodes and may be used by the backend during code generation.
Eventually, the lowering of the GC_TRANSITION_{START,END} nodes should be informed by the GC strategy in use for the function containing the intrinsic call; for now, these nodes are instead replaced with no-ops.
Differential Revision: http://reviews.llvm.org/D9501
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236888
91177308-0d34-0410-b5e6-
96231b3b80d8