Jim Grosbach [Fri, 22 Jun 2012 23:56:44 +0000 (23:56 +0000)]
TableGen: AsmMatcher support for better operand diagnostics.
"Invalid operand" may be a completely correct diagnostic, but it's often
insufficiently specific to really help identify and fix the problem in
assembly source. Allow a target to specify a more-specific diagnostic kind
for each AsmOperandClass derived definition and use that to provide
more detailed diagnostics when an operant of that class resulted in a
match failure.
rdar://
8987109
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159050
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Fri, 22 Jun 2012 23:10:08 +0000 (23:10 +0000)]
Add support for the PPC isel instruction.
The isel (integer select) instruction is supported on the 440 and A2
embedded cores and on the POWER7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159045
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 22 Jun 2012 23:04:02 +0000 (23:04 +0000)]
FileCheckize tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159044
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 22 Jun 2012 22:31:00 +0000 (22:31 +0000)]
Rename fp-op fusion option (yet again) for compatibility with GCC option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159042
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 22:27:36 +0000 (22:27 +0000)]
Remove ProcessImplicitDefs.h which was unused.
The ProcessImplicitDefs class can be local to its implementation file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159041
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 22:23:58 +0000 (22:23 +0000)]
Also verify the def index for early clobbers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159039
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 22 Jun 2012 22:07:19 +0000 (22:07 +0000)]
Whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159035
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 20:40:15 +0000 (20:40 +0000)]
Delete a boring statistic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159030
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 20:37:52 +0000 (20:37 +0000)]
Store live intervals in an IndexedMap.
It is both smaller and faster than DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159029
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 22 Jun 2012 20:30:39 +0000 (20:30 +0000)]
Forgot this patch in r159023.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159028
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Fri, 22 Jun 2012 20:27:13 +0000 (20:27 +0000)]
Revert r158679 - use case is unclear (and it increases the memory footprint).
Original commit message:
Allow up to 64 functional units per processor itinerary.
This patch changes the type used to hold the FU bitset from unsigned to uint64_t.
This will be needed for some upcoming PowerPC itineraries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159027
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 22 Jun 2012 20:14:46 +0000 (20:14 +0000)]
EmitZerofill should take a 64-bit size or else it's chopping off large zero-filled global. rdar://
11729134
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159023
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 19:51:41 +0000 (19:51 +0000)]
Fix a crash in --debug code.
Don't try to print out the live range of a physreg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159021
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 18:51:35 +0000 (18:51 +0000)]
Don't depend on live ranges being present.
DBG_VALUE instructions could be referring to non-existing virtual
registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159020
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 18:38:57 +0000 (18:38 +0000)]
Simplify handleMove() a bit.
There is no need to check for physreg live ranges. They don't exist any
more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159019
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 18:20:50 +0000 (18:20 +0000)]
Stop computing physreg live ranges.
Everyone is using on-demand regunit ranges now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159018
91177308-0d34-0410-b5e6-
96231b3b80d8
Marshall Clow [Fri, 22 Jun 2012 18:12:28 +0000 (18:12 +0000)]
Reverting makefile change wile I figure out what the heck happened
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159017
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 17:49:44 +0000 (17:49 +0000)]
Remove some redundant LIS->hasInterval() checks.
These functions only operate on virtual registers now, and they all have
live ranges.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159015
91177308-0d34-0410-b5e6-
96231b3b80d8
Marshall Clow [Fri, 22 Jun 2012 17:43:40 +0000 (17:43 +0000)]
Added building yaml2obj to the configure+make build system
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159014
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 17:31:01 +0000 (17:31 +0000)]
Use MRI::isConstantPhysReg() to check remat feasibility.
Don't depend on LiveIntervals::hasInterval() to determine if a physreg
is reserved and constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159013
91177308-0d34-0410-b5e6-
96231b3b80d8
Kaelyn Uhrain [Fri, 22 Jun 2012 17:18:15 +0000 (17:18 +0000)]
Remove a variable that is unused when assertions aren't enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159011
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 17:15:32 +0000 (17:15 +0000)]
Use regunit liveness to guide LiveDebugVariables.
This should produce the same results as using physreg liveness directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159009
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 16:46:44 +0000 (16:46 +0000)]
Remove LiveIntervals::trackingRegUnits().
With regunit liveness permanently enabled, this function would always
return true.
Also remove now obsolete code for checking physreg interference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159006
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 16:36:43 +0000 (16:36 +0000)]
Revert remaining part of r93200: "Disable folding sext(trunc(x)) -> x"
This fixes PR5997.
These transforms were disabled because codegen couldn't deal with other
uses of trunc(x). This is now handled by the peephole pass.
This causes no regressions on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159003
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Fri, 22 Jun 2012 16:00:48 +0000 (16:00 +0000)]
Change comment into proper Doxygen member comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159000
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Fri, 22 Jun 2012 15:50:53 +0000 (15:50 +0000)]
simplify code from previous commits (Thanks Duncan)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158999
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 22 Jun 2012 14:53:30 +0000 (14:53 +0000)]
Fixed r158979.
Original message:
Performance optimizations:
- SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges.
- Optimized IntItem, added APInt value caching.
- Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158997
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 22 Jun 2012 13:41:00 +0000 (13:41 +0000)]
test/CodeGen/Generic/asm-large-immediate.ll: Mark it as XFAIL: powerpc, possibly due to r158939.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158994
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 22 Jun 2012 13:32:49 +0000 (13:32 +0000)]
Remove another duplicated variable. We only need one to tell us if the linker
knows dwarf or not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158993
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 22 Jun 2012 13:24:07 +0000 (13:24 +0000)]
Fix a FIXME: DwarfRequiresRelocationForSectionOffset is the same as
DwarfUsesRelocationsAcrossSections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158992
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 22 Jun 2012 10:35:06 +0000 (10:35 +0000)]
Revert commit 158979 (dyatkovskiy) since it is causing several buildbots to
fail. Original commit message:
Performance optimizations:
- SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges.
- Optimized IntItem, added APInt value caching.
- Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only.
On my machine these optimizations gave about 4-6% of compile-time improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158986
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 22 Jun 2012 07:35:13 +0000 (07:35 +0000)]
Performance optimizations:
- SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges.
- Optimized IntItem, added APInt value caching.
- Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only.
On my machine these optimizations gave about 4-6% of compile-time improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158979
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 22 Jun 2012 03:58:51 +0000 (03:58 +0000)]
Use "NoItineraries" for processors with no itineraries.
This makes it explicit when ScoreboardHazardRecognizer will be used.
"GenericItineraries" would only make sense if it contained real
itinerary values and still required ScoreboardHazardRecognizer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158963
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 22 Jun 2012 03:04:27 +0000 (03:04 +0000)]
Functions calling __builtin_eh_return must have a frame pointer.
The code in X86TargetLowering::LowerEH_RETURN() assumes that a frame
pointer exists, but the frame pointer was forced by the presence of
llvm.eh.unwind.init which isn't guaranteed.
If llvm.eh.unwind.init is actually required in functions calling
eh.return (is it?), we should diagnose that instead of emitting bad
machine code.
This should fix the dragonegg-x86_64-linux-gcc-4.6-test bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158961
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 22 Jun 2012 02:50:33 +0000 (02:50 +0000)]
ARM scheduling fix: don't guess at implicit operand latency.
This is a minor drive-by fix with no robust way to unit test.
As an example see neon-div.ll:
SU(16): %Q8<def> = VMOVLsv4i32 %D17, pred:14, pred:%noreg, %Q8<imp-use,kill>
val SU(1): Latency=2 Reg=%Q8
...should be latency=1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158960
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 22 Jun 2012 02:50:31 +0000 (02:50 +0000)]
ARM scheduling fix: compute predicated implicit use properly.
Minor drive by fix to cleanup latency computation. Calling
getOperandLatency with a deliberately incorrect operand index does not
give you the latency you want.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158959
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Fri, 22 Jun 2012 01:25:12 +0000 (01:25 +0000)]
Emit relocations for DW_AT_location entries on systems which need it. This is
a recommit of r127757. Fixes PR9493. Patch by Paul Robinson!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158957
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 22 Jun 2012 01:09:09 +0000 (01:09 +0000)]
Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a
boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).
This option controls the creation by optimizations of fused FP ops that store
intermediate results in higher precision than IEEE allows (E.g. FMAs). The
behavior of this option is intended to match the behaviour specified by a
soon-to-be-introduced frontend flag: '-ffuse-fp-ops'.
Fast mode - allows formation of fused FP ops whenever they're profitable.
Standard mode - allow fusion only for 'blessed' FP ops. At present the only
blessed op is the fmuladd intrinsic. In the future more blessed ops may be
added.
Strict mode - allow fusion only if/when it can be proven that the excess
precision won't effect the result.
Note: This option only controls formation of fused ops by the optimizers. Fused
operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic)
will always be honored, regardless of the value of this option.
Internally TargetOptions::AllowExcessFPPrecision has been replaced by
TargetOptions::AllowFPOpFusion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158956
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Fri, 22 Jun 2012 00:49:52 +0000 (00:49 +0000)]
Convert the PPC backend to use the new FMA infrastructure.
The existing contraction patterns are replaced with fma/fneg.
Overall functionality should be the same.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158955
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Fri, 22 Jun 2012 00:29:58 +0000 (00:29 +0000)]
fix whitespace in my last commit.
sorry for the churn :S enough for today; going to sleep.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158953
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Fri, 22 Jun 2012 00:25:01 +0000 (00:25 +0000)]
remove extractMallocCallFromBitCast, since it was tailor maded for its sole user. Update GlobalOpt accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158952
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 23:52:14 +0000 (23:52 +0000)]
instcombine: disable optimization of 'invoke null/undef'. I'll move this functionality to SimplifyCFG (since we cannot make changes to the CFG here).
Fixes the crashes with the attached test case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158951
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Thu, 21 Jun 2012 23:27:09 +0000 (23:27 +0000)]
[docs] Sphinxify GettingStartedVS. Patch by Mikael Lyngvig!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158947
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 21 Jun 2012 22:52:49 +0000 (22:52 +0000)]
Look pass zext to strength reduce an udiv. Patch by David Majnemer. rdar://
11721329
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158946
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnaud A. de Grandmaison [Thu, 21 Jun 2012 22:26:01 +0000 (22:26 +0000)]
Remove trailing whitespaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158943
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 21 Jun 2012 22:17:51 +0000 (22:17 +0000)]
llvm/unittests: Simplify LINK_COMPONENTS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158942
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 21 Jun 2012 22:17:39 +0000 (22:17 +0000)]
llvm/unittests/VMCore/CMakeLists.txt: Introduce LLVM_OPTIONAL_SOURCES here, too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158941
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Thu, 21 Jun 2012 21:37:54 +0000 (21:37 +0000)]
The inline asm operand modifier 'n' is suppose
to be generic across architectures. It has the
following description in the gnu sources:
Negate the immediate constant
Several Architectures such as x86 have local implementations
of operand modifier 'n' which go beyond the above description
slightly. This won't affect them.
Affected files:
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
Added 'n' to the switch cases.
test/CodeGen/Generic/asm-large-immediate.ll
Generic compiled test (x86 for me)
test/CodeGen/Mips/asm-large-immediate.ll
Mips compiled version of the generic one
Contributer: Jack Carter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158939
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 21:25:05 +0000 (21:25 +0000)]
Add support for invoke to the MemoryBuiltin analysid.
Update comments accordingly.
Make instcombine remove useless invokes to C++'s 'new' allocation function (test attached).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158937
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 21 Jun 2012 20:39:10 +0000 (20:39 +0000)]
1. fix null program output after some other changes
2. re-enable null.ll test
3. fix some minor style violations
Patch by Reed Kotler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158935
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 21 Jun 2012 20:23:32 +0000 (20:23 +0000)]
Add Mips to the list of target architectures for the MCJIT tests.
Patch by Reed Kotler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158933
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Thu, 21 Jun 2012 20:10:48 +0000 (20:10 +0000)]
Treat TargetGlobalAddress as a constant for the purpose of matching pre-inc stores on PPC.
Thanks to Tobias von Koch for pointing out this problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158932
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 18:44:24 +0000 (18:44 +0000)]
Avoid using the recently added APPEND_STRING feature. This should
restore support for CMake versions before 2.8.6 -- sorry for the
trouble!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158930
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 18:38:26 +0000 (18:38 +0000)]
fix build in C++11 mode.
Thanks to Chandler for pointing out the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158928
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 21 Jun 2012 18:00:39 +0000 (18:00 +0000)]
Fix potential crash if DAGCombine on stores sees a half type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158927
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Thu, 21 Jun 2012 17:14:46 +0000 (17:14 +0000)]
The inline asm operand modifier 'c' is suppose
to be generic across architectures. It has the
following description in the gnu sources:
Substitute immediate value without immediate syntax
Several Architectures such as x86 have local implementations
of operand modifier 'c' which go beyond the above description
slightly. To make use of the generic modifiers without overriding
local implementation one can make a call to the base class method
for AsmPrinter::PrintAsmOperand() in the locally derived method's
"default" case in the switch statement. That way if it is already
defined locally the generic version will never get called.
This change is needed when test/CodeGen/generic/asm-large-immediate.ll
failed on a native Mips board. The test was assuming a generic
implementation was in place.
Affected files:
lib/Target/Mips/MipsAsmPrinter.cpp:
Changed the default case to call the base method.
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
Added 'c' to the switch cases.
test/CodeGen/Mips/asm-large-immediate.ll
Mips compiled version of the generic one
Contributer: Jack Carter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158925
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 16:58:41 +0000 (16:58 +0000)]
move some typedefs so that we don't polute the llvm namespace. this should appease the GCC buildbots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158924
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 16:47:58 +0000 (16:47 +0000)]
hopefully fix the buildbots: some tests have wrong definitions of malloc and were crashing this code on 64 bits machines
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158923
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 15:59:53 +0000 (15:59 +0000)]
port the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most of the code from here).
Remove the alloc_size.ll test until we settle on a metadata format that makes everyone happy..
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158920
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Thu, 21 Jun 2012 15:45:28 +0000 (15:45 +0000)]
refactor the MemoryBuiltin analysis:
- provide more extensive set of functions to detect library allocation functions (e.g., malloc, calloc, strdup, etc)
- provide an API to compute the size and offset of an object pointed by
Move a few clients (GVN, AA, instcombine, ...) to the new API.
This implementation is a lot more aggressive than each of the custom implementations being replaced.
Patch reviewed by Nick Lewycky and Chandler Carruth, thanks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158919
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 21 Jun 2012 13:44:31 +0000 (13:44 +0000)]
Add a number of threshold arguments to the SRA pass.
A patch by Tom Stellard with minor changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158918
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 21 Jun 2012 13:43:06 +0000 (13:43 +0000)]
Revert r158209, "test/CodeGen/Generic/APIntLoadStore.ll: Mark as XFAIL:ppc since r157911."
It passes according to ppc changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158917
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 21 Jun 2012 12:44:58 +0000 (12:44 +0000)]
llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt: Unbreak build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158914
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 10:02:41 +0000 (10:02 +0000)]
Add a pragma to supress an MSVC warning on some of the absurd code I'm
using to test the alignment support library.
Patch from Nikola on IRC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158912
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 10:02:40 +0000 (10:02 +0000)]
Add some missing dependencies here that I missed in my first pass
through. Also sort them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158911
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 09:51:26 +0000 (09:51 +0000)]
Completely refactor the structuring of unittest CMake files to match the
Makefiles, the CMake files in every other part of the LLVM tree, and
sanity.
This should also restore the output tree structure of all the unit
tests, sorry for breaking that, and thanks for letting me know.
The fundamental change is to put a CMakeLists.txt file in the unittest
directory, with a single test binary produced from it. This has several
advantages:
- No more weird directory stripping in the unittest macro, allowing it
to be used more readily in other projects.
- No more directory prefixes on all the source files.
- Allows correct and precise use of LLVM's per-directory dependency
system.
- Allows use of the checking logic for source files that have not been
added to the CMake build. This uncovered a file being skipped with
CMake in LLVM and one in Clang's unit tests.
- Makes Specifying conditional compilation or other custom logic for JIT
tests easier.
It did require adding the concept of an explicit 'optional' source file
to the CMake build so that the missing-file check can skip cases where
the file is *supposed* to be missing. =]
This is another chunk of refactoring the CMake build in order to make it
usable for other clients like CompilerRT / ASan / TSan.
Note that this is interdependent with a Clang CMake change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158909
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 21 Jun 2012 08:58:15 +0000 (08:58 +0000)]
llvm-stress: Stabalize (by using an ordered container) and add randomness to the order in which loops are generated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158908
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 21 Jun 2012 07:01:02 +0000 (07:01 +0000)]
Cleanup some encoding mishaps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158904
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 21 Jun 2012 06:58:24 +0000 (06:58 +0000)]
Sphinxify the tablegen document.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158903
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Thu, 21 Jun 2012 06:10:00 +0000 (06:10 +0000)]
Add a missing llvm.fma -> VFNMS pattern to the ARM backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158902
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 21 Jun 2012 06:09:37 +0000 (06:09 +0000)]
Sphinxify the outdated Packaging documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158901
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 21 Jun 2012 05:56:05 +0000 (05:56 +0000)]
Emit a single _udivmodsi4 libcall instead of two separate _udivsi3 and
_umodsi3 libcalls if they have the same arguments. This optimization
was apparently broken if one of the node was replaced in place.
rdar://
11714607
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158900
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 05:16:58 +0000 (05:16 +0000)]
Factor the logic for setting up a GoogleTest unit test executable into
a helper function in CMake. This will allow us to share all of this
logic with Clang, and eventually CompilerRT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158896
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 02:02:48 +0000 (02:02 +0000)]
Simplify the naming pattern in the unittests' CMake file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158893
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 21 Jun 2012 01:35:09 +0000 (01:35 +0000)]
Remove one of the LLVM-specific CMake hacks in favor of standard CMake
facilities.
This was only used in one place in LLVM, and was used pervasively (but
with different code!) in Clang. It has no advantages over the standard
CMake facilities and in some cases disadvantages.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158889
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 21 Jun 2012 00:09:15 +0000 (00:09 +0000)]
Update regunits in RegisterCoalescer::reMaterializeTrivialDef.
Old code would only update physreg live intervals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158881
91177308-0d34-0410-b5e6-
96231b3b80d8
Meador Inge [Wed, 20 Jun 2012 23:57:00 +0000 (23:57 +0000)]
Put space after "code-block::".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158880
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 23:54:20 +0000 (23:54 +0000)]
Remove LiveIntervals::iterator.
Live intervals for regunits and virtual registers are stored separately,
and physreg live intervals are going away.
To visit the live ranges of all virtual registers, use this pattern
instead:
for (unsigned i = 0, e = MRI->getNumVirtRegs(); i != e; ++i) {
unsigned Reg = TargetRegisterInfo::index2VirtReg(i);
if (MRI->reg_nodbg_empty(Reg))
continue;
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158879
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 23:54:18 +0000 (23:54 +0000)]
Remove spurious typedefs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158878
91177308-0d34-0410-b5e6-
96231b3b80d8
Meador Inge [Wed, 20 Jun 2012 23:48:01 +0000 (23:48 +0000)]
Removed some left over HTML tags and a '}'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158877
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 23:47:58 +0000 (23:47 +0000)]
Remove the RenderMachineFunction HTML output pass.
I don't think anyone has been using this functionality for a while, and
it is getting in the way of refactoring now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158876
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 23:31:34 +0000 (23:31 +0000)]
Remove the -live-regunits command line option.
Register allocators depend on it being permanently enabled now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158873
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 23:23:59 +0000 (23:23 +0000)]
Fix some more LiveInterval enumerations.
Deterministically enumerate the virtual registers instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158872
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 22:52:29 +0000 (22:52 +0000)]
Remove LiveIntervalUnions from RegAllocBase.
They are living in LiveRegMatrix now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158868
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 22:52:26 +0000 (22:52 +0000)]
Convert RAGreedy to LiveRegMatrix interference checking.
Stop depending on the LiveIntervalUnions in RegAllocBase, they are about
to be removed.
The changes are mostly replacing register alias iterators with regunit
iterators, and querying LiveRegMatrix instrad of RegAllocBase.
InterferenceCache is converted to work with per-regunit
LiveIntervalUnions, and it checks fixed regunit interference separately,
using the fixed live intervals provided by LiveIntervalAnalysis.
The local splitting helper calcGapWeights() is also considering fixed
regunit interference which is kept on the side now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158867
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 22:52:24 +0000 (22:52 +0000)]
Convert RABasic to using LiveRegMatrix interference checking.
Stop using the LiveIntervalUnions provided by RegAllocBase, they will be
removed soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158866
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 22:52:22 +0000 (22:52 +0000)]
Enable register unit liveness by default.
Soon we won't need to compute live intervals for physical registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158865
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 22:32:05 +0000 (22:32 +0000)]
Teach PBQPBuilder::build() about regunit interference.
Filter out physreg candidates with regunit interferrence.
Also compute regmask interference more efficiently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158864
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 20 Jun 2012 22:18:33 +0000 (22:18 +0000)]
Restructure PopulateLoopsDFS::insertIntoLoop.
As Nadav pointed out the first implementation was obscure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158862
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 20 Jun 2012 21:54:22 +0000 (21:54 +0000)]
Sphixify the GEP FAQ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158858
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 21:25:05 +0000 (21:25 +0000)]
Avoid iterating with LiveIntervals::iterator.
That is a DenseMap iterator keyed by pointers, so the iteration order is
nondeterministic.
I would like to replace the DenseMap with an IndexedMap which doesn't
allow iteration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158856
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 20 Jun 2012 21:19:39 +0000 (21:19 +0000)]
Revert r158846.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158855
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 20 Jun 2012 20:39:23 +0000 (20:39 +0000)]
In MipsDisassembler.cpp, instead of defining register class tables, use the ones
that are generated by TableGen and are already available in
MipsGenRegisterInfo.inc. Suggested by Jakob Stoklund Olesen.
Also, fix bug in function DecodeAFGR64RegisterClass.
Patch by Vladimir Medic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158846
91177308-0d34-0410-b5e6-
96231b3b80d8
Kaelyn Uhrain [Wed, 20 Jun 2012 20:38:36 +0000 (20:38 +0000)]
Remove an "else" that snuck in after a "return" ;)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158844
91177308-0d34-0410-b5e6-
96231b3b80d8
Kaelyn Uhrain [Wed, 20 Jun 2012 20:21:33 +0000 (20:21 +0000)]
Check that a file is not a directory before reading it into a MemoryBuffer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158841
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 20 Jun 2012 20:17:20 +0000 (20:17 +0000)]
Add "extern template" declarations now that we use explicit instantiation.
This is supported by gcc and clang, but guarded by a macro for MSVC 2008.
The extern template declaration is not necessary but generally good
form. It can avoid extra instantiations of the template methods
defined inline.
The EXTERN_TEMPLATE_INSTANTIATION macro could probably be generalized to
handle multiple template parameters if someone thinks it's worthwhile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158840
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Wed, 20 Jun 2012 19:35:43 +0000 (19:35 +0000)]
Add users of a MERGE_VALUE node to the worklist to process again when the node is removed. Sorry, no test case. Foudn it by inspection of the code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158839
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 18:00:57 +0000 (18:00 +0000)]
Only update regunit live ranges that have been precomputed.
Regunit live ranges are computed on demand, so when mi-sched calls
handleMove, some regunits may not have live ranges yet.
That makes updating them easier: Just skip the non-existing ranges. They
will be computed correctly from the rescheduled machine code when they
are needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158831
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Wed, 20 Jun 2012 17:30:51 +0000 (17:30 +0000)]
replace usage of EmitGEPOffset() with TargetData::getIndexedOffset() when the GEP offset is known to be constant.
With this change, we avoid relying on the IR Builder to constant fold the operations.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158829
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 20 Jun 2012 16:38:50 +0000 (16:38 +0000)]
Delete dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158827
91177308-0d34-0410-b5e6-
96231b3b80d8