Craig Topper
15d39adbca
Fix a crash on release builds if gather intrinsics are passed a non-constant value for the last argument.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159501 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-01 02:17:08 +00:00
Craig Topper
de6e484c15
Use a second switch statement to reduce number of calls to SelectGather in code. Reduces code size a bit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159500 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-01 02:05:52 +00:00
Benjamin Kramer
992c25a3fc
Reduce use list thrashing by using DenseMap's find_as for maps with ValueHandle keys.
...
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159497 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30 22:37:15 +00:00
Bill Wendling
c1b6ea7b6c
Don't reinsert the 'atexit' function if it already exists.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159491 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30 20:21:19 +00:00
Chandler Carruth
cf23bd3d8f
Hoist LLVM's lit testsuite infrastructure into module so that it can be
...
re-used. Also, build in direct support for accumulating a set of lit
parameters, arguments, and testsuites to run as part of a 'check-all'
rule. This sinks 'check-all' from a Clang-specific construct to
a generic construct of the project.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159482 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30 10:14:14 +00:00
Benjamin Kramer
ac24e25101
Avoid sign compare warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159481 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30 10:02:08 +00:00
Rafael Espindola
682e8d05c7
Handle implicit_defs in the register coalescer. I am still trying to produce
...
a reduced testcase, but this fixes pr13209.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159479 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30 01:45:55 +00:00
Nuno Lopes
ea47553006
revert r159440. As Duncan pointed out, the test for invoke is not needed at this point
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159471 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 22:10:10 +00:00
Manman Ren
76c6ccbd4c
ARM: Clean up optimizeCompare in peephole, no functional change.
...
Use getUniqueVRegDef.
Replace a loop with existing interfaces: modifiesRegister and readsRegister.
Factor out code into inline functions and simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159470 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 22:06:19 +00:00
Manman Ren
de7266c611
Add SrcReg2 to analyzeCompare and optimizeCompareInstr to handle Compare
...
instructions with two register operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159465 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 21:33:59 +00:00
Jakob Stoklund Olesen
8ccaad526a
Clear kill flags in InstrEmitter::EmitSubregNode().
...
When a local virtual register is made global, make sure to clear any
existing kill flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159461 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 21:00:03 +00:00
Jakob Stoklund Olesen
bb0721680c
Check for extra kill flags on live-out virtual registers.
...
This would previously get reported as the misleading "Virtual register
def doesn't dominate all uses."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159460 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 21:00:00 +00:00
Benjamin Kramer
6c50551e9a
CodeGenPrepare: Don't crash when TLI is not available.
...
This happens when codegenprepare is invoked via opt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159457 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 19:58:21 +00:00
Manman Ren
54d69668b2
Add getUniqueVRegDef to MachineRegisterInfo.
...
This comes in handy during peephole optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159453 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 19:16:05 +00:00
Duncan Sands
2923bca2b5
Rework this to clarify where the removal of nodes from the queue is
...
really happening. No intended functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159451 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 19:03:05 +00:00
Nuno Lopes
7d539716e2
RefreshCallGraph: ignore 'invoke intrinsic'. IntrinsicInst doesnt not recognize invoke, and shouldnt at this point, since the rest of LLVM codebase doesnt expect invoke of intrinsics
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159441 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 17:49:32 +00:00
Nuno Lopes
60db7966ac
ignore 'invoke new' in isInstructionTriviallyDead, since most callers are not ready to handle invokes. instcombine will take care of this.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159440 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 17:37:07 +00:00
Alexey Samsonov
e2ec140909
Cleanup in DwarfDebug - fix a typo and remove two unused functions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159433 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 16:04:14 +00:00
Duncan Sands
96d2eff5c6
Fix a reassociate crash on sozefx when compiling with dragonegg+gcc-4.7 due to
...
the optimizers producing a multiply expression with more multiplications than
the original (!).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159426 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 13:25:06 +00:00
Chandler Carruth
06cb8ed006
Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h
...
This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.
I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.
I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.
Thanks to Bill and Eric for giving the green light for this bit of cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 12:38:19 +00:00
Bill Wendling
1a3b28b97f
Update the CMake files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159417 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 09:01:47 +00:00
Bill Wendling
3bf24bdb1b
Sphinxify the Atomics documentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159416 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 09:00:01 +00:00
Bill Wendling
16eeb6f5eb
The DIBuilder class is just a wrapper around debug info creation
...
(a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159414 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 08:32:07 +00:00
Andrew Trick
3e4b3b9043
Revert "Make NumMicroOps a variable in the subtarget's instruction itinerary."
...
This reverts commit r159406. I noticed a performance regression so I'll back out for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159411 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 07:10:41 +00:00
Rafael Espindola
94e3b388e5
In the initial exec mode we always do a load to find the address of a variable.
...
Before this patch in pic 32 bit code we would add the global base register
and not load from that address. This is a really old bug, but before the
introduction of the tls attributes we would never select initial exec for
pic code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159409 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 04:22:35 +00:00
Andrew Trick
5559ffae2b
misched: avoid scheduling instructions that can't be dispatched.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159408 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 03:23:24 +00:00
Andrew Trick
7f8c74cfae
misched: count micro-ops toward the issue limit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159407 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 03:23:22 +00:00
Andrew Trick
0d9513c74f
Make NumMicroOps a variable in the subtarget's instruction itinerary.
...
The TargetInstrInfo::getNumMicroOps API does not change, but soon it
will be used by MachineScheduler. Now each subtarget can specify the
number of micro-ops per itinerary class. For ARM, this is currently
always dynamic (-1), because it is used for load/store multiple which
depends on the number of register operands.
Zero is now a valid number of micro-ops. This can be used for
nop pseudo-instructions or instructions that the hardware can squash
during dispatch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159406 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 03:23:18 +00:00
Manman Ren
40307c7dbe
X86: add more GATHER intrinsics in LLVM
...
Corrected type for index of llvm.x86.avx2.gather.d.pd.256
from 256-bit to 128-bit.
Corrected types for src|dst|mask of llvm.x86.avx2.gather.q.ps.256
from 256-bit to 128-bit.
Support the following intrinsics:
llvm.x86.avx2.gather.d.q, llvm.x86.avx2.gather.q.q
llvm.x86.avx2.gather.d.q.256, llvm.x86.avx2.gather.q.q.256
llvm.x86.avx2.gather.d.d, llvm.x86.avx2.gather.q.d
llvm.x86.avx2.gather.d.d.256, llvm.x86.avx2.gather.q.d.256
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159402 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 00:54:20 +00:00
Chandler Carruth
cfc49bfd3f
Remove a completely unnecessary mkdir from the CMake build.
...
Clang has been getting along fine without this for quite some time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159400 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 00:45:57 +00:00
Chandler Carruth
2178d732a3
Add a missing common variable to the lit.site.cfg generation. This was
...
only used in the Clang tree, but it seems reasonable to support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159399 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29 00:40:15 +00:00
Nick Lewycky
4d3bba5be4
If the step value is a constant zero, the loop isn't going to terminate. Fixes
...
the assert reported in PR13228!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159393 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 23:44:57 +00:00
Nuno Lopes
917f97c580
make the verifier accept @llvm.donothing as the only intrinsic that can be invoked
...
While at it, merge 2 tests and FileCheckize them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159388 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 22:57:00 +00:00
Nuno Lopes
7f71f5f6b8
make simplifyCFG erase invokes to readonly/readnone functions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159385 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 22:32:27 +00:00
Nuno Lopes
c363c74c45
make instcombine produce calls to llvm.donothing instead of a random intrinsic
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159384 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 22:31:24 +00:00
Nuno Lopes
85b408991a
add a new @llvm.donothing intrinsic that, well, does nothing, and teach CodeGen to ignore calls to it
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159383 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 22:30:12 +00:00
Jim Grosbach
926dc168c8
'Promote' vector [su]int_to_fp should widen elements.
...
Teach vector legalization how to honor Promote for int to float
conversions. The code checking whether to promote the operation knew
to look at the operand, but the actual promotion code didn't. This
fixes that. The operand is promoted up via [zs]ext.
rdar://11762659
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159378 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 21:03:44 +00:00
Jack Carter
f38ad8efd0
Changed the formatting sequence of a curly brace to
...
the comment per code review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159376 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 20:46:26 +00:00
Eric Christopher
a1095b237f
Regenerate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159374 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 20:35:00 +00:00
Bill Wendling
112f575e4b
Remove layering violation #include.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159372 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 20:17:05 +00:00
Benjamin Kramer
82690316e4
Fix hexagon gcc builtin names to use '_' instead of '.'.
...
This way the generated GCC builtin to LLVM intrinsic converter
actually works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159370 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 20:08:47 +00:00
Benjamin Kramer
d5dbc8c2bb
Enable automatic GCC<->LLVM intrinsic translation for mips.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159367 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 19:09:53 +00:00
Simon Atanasyan
c71da6662a
Define MIPS DSP Rev1 intrinsics. That allows frontend to emit a correct IR.
...
This patch was reviewed in the llvm-commits list by Jim Grosbach.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159364 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 18:20:28 +00:00
Nuno Lopes
41a3f25134
MemoryBuiltins:
...
- recognize C++ new(std::nothrow) friends
- ignore ExtractElement and ExtractValue instructions in size/offset analysis (all easy cases are probably folded away before we get here)
- also recognize realloc as noalias
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159356 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 16:34:03 +00:00
Nuno Lopes
e50487796d
make LazyValueInfo analyze the default case of switch statements (we know that in the default branch the value cannot be any of the switch cases)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 16:13:37 +00:00
Nuno Lopes
62d7afad8f
add ConstantRange::difference (to perform set difference/relative complement)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159352 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 16:10:13 +00:00
Benjamin Kramer
ceb5bc7df1
Devirtualize DIScope and subclasses.
...
Nothing in here makes use of the virtuality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159349 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 14:25:45 +00:00
Kostya Serebryany
324cbb89f2
[asan] set a hard limit on the number of instructions instrumented pear each BB. This is (hopefully temporary) workaround for PR13225
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159344 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 09:34:41 +00:00
Bill Wendling
0ca9927a71
Sphinxify the bitcode format document.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159340 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 08:43:12 +00:00
Alexey Samsonov
87dc7a4c8d
Fix Windows build after r159281: s/iterator/const_iterator
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159334 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28 07:47:50 +00:00