oota-llvm.git
11 years agoAdd support for the PPC isel instruction.
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

11 years agoFileCheckize tests.
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

11 years agoRename fp-op fusion option (yet again) for compatibility with GCC option.
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

11 years agoRemove ProcessImplicitDefs.h which was unused.
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

11 years agoAlso verify the def index for early clobbers.
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

11 years agoWhitespace.
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

11 years agoDelete a boring statistic.
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

11 years agoStore live intervals in an IndexedMap.
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

11 years agoForgot this patch in r159023.
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

11 years agoRevert r158679 - use case is unclear (and it increases the memory footprint).
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

11 years agoEmitZerofill should take a 64-bit size or else it's chopping off large zero-filled...
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

11 years agoFix a crash in --debug code.
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

11 years agoDon't depend on live ranges being present.
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

11 years agoSimplify handleMove() a bit.
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

11 years agoStop computing physreg live ranges.
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

11 years agoReverting makefile change wile I figure out what the heck happened
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

11 years agoRemove some redundant LIS->hasInterval() checks.
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

11 years agoAdded building yaml2obj to the configure+make build system
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

11 years agoUse MRI::isConstantPhysReg() to check remat feasibility.
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

11 years agoRemove a variable that is unused when assertions aren't enabled.
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

11 years agoUse regunit liveness to guide LiveDebugVariables.
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

11 years agoRemove LiveIntervals::trackingRegUnits().
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

11 years agoRevert remaining part of r93200: "Disable folding sext(trunc(x)) -> x"
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

11 years agoChange comment into proper Doxygen member comment.
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

11 years agosimplify code from previous commits (Thanks Duncan)
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

11 years agoFixed r158979.
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

11 years agotest/CodeGen/Generic/asm-large-immediate.ll: Mark it as XFAIL: powerpc, possibly...
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

11 years agoRemove another duplicated variable. We only need one to tell us if the linker
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

11 years agoFix a FIXME: DwarfRequiresRelocationForSectionOffset is the same as
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

11 years agoRevert commit 158979 (dyatkovskiy) since it is causing several buildbots to
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

11 years agoPerformance optimizations:
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

11 years agoUse "NoItineraries" for processors with no itineraries.
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

11 years agoFunctions calling __builtin_eh_return must have a frame pointer.
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

11 years agoARM scheduling fix: don't guess at implicit operand latency.
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

11 years agoARM scheduling fix: compute predicated implicit use properly.
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

11 years agoEmit relocations for DW_AT_location entries on systems which need it. This is
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

11 years agoRename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a
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

11 years agoConvert the PPC backend to use the new FMA infrastructure.
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

11 years agofix whitespace in my last commit.
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

11 years agoremove extractMallocCallFromBitCast, since it was tailor maded for its sole user...
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

11 years agoinstcombine: disable optimization of 'invoke null/undef'. I'll move this functionali...
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

11 years ago[docs] Sphinxify GettingStartedVS. Patch by Mikael Lyngvig!
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

11 years agoLook pass zext to strength reduce an udiv. Patch by David Majnemer. rdar://11721329
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

11 years agoRemove trailing whitespaces
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

11 years agollvm/unittests: Simplify LINK_COMPONENTS.
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

11 years agollvm/unittests/VMCore/CMakeLists.txt: Introduce LLVM_OPTIONAL_SOURCES here, too.
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

11 years agoThe inline asm operand modifier 'n' is suppose
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

11 years agoAdd support for invoke to the MemoryBuiltin analysid.
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

11 years ago1. fix null program output after some other changes
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

11 years agoAdd Mips to the list of target architectures for the MCJIT tests.
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

11 years agoTreat TargetGlobalAddress as a constant for the purpose of matching pre-inc stores...
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

11 years agoAvoid using the recently added APPEND_STRING feature. This should
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

11 years agofix build in C++11 mode.
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

11 years agoFix potential crash if DAGCombine on stores sees a half type
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

11 years agoThe inline asm operand modifier 'c' is suppose
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

11 years agomove some typedefs so that we don't polute the llvm namespace. this should appease...
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

11 years agohopefully fix the buildbots: some tests have wrong definitions of malloc and were...
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

11 years agoport the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most of...
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

11 years agorefactor the MemoryBuiltin analysis:
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

11 years agoAdd a number of threshold arguments to the SRA pass.
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

11 years agoRevert r158209, "test/CodeGen/Generic/APIntLoadStore.ll: Mark as XFAIL:ppc since...
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

11 years agollvm/unittests/ExecutionEngine/JIT/CMakeLists.txt: Unbreak build.
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

11 years agoAdd a pragma to supress an MSVC warning on some of the absurd code I'm
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

11 years agoAdd some missing dependencies here that I missed in my first pass
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

11 years agoCompletely refactor the structuring of unittest CMake files to match the
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

11 years agollvm-stress: Stabalize (by using an ordered container) and add randomness to the...
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

11 years agoCleanup some encoding mishaps.
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

11 years agoSphinxify the tablegen document.
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

11 years agoAdd a missing llvm.fma -> VFNMS pattern to the ARM backend.
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

11 years agoSphinxify the outdated Packaging documentation.
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

11 years agoEmit a single _udivmodsi4 libcall instead of two separate _udivsi3 and
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

11 years agoFactor the logic for setting up a GoogleTest unit test executable into
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

11 years agoSimplify the naming pattern in the unittests' CMake file
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

11 years agoRemove one of the LLVM-specific CMake hacks in favor of standard CMake
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

11 years agoUpdate regunits in RegisterCoalescer::reMaterializeTrivialDef.
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

11 years agoPut space after "code-block::".
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

11 years agoRemove LiveIntervals::iterator.
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

11 years agoRemove spurious typedefs.
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

11 years agoRemoved some left over HTML tags and a '}'.
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

11 years agoRemove the RenderMachineFunction HTML output pass.
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

11 years agoRemove the -live-regunits command line option.
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

11 years agoFix some more LiveInterval enumerations.
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

11 years agoRemove LiveIntervalUnions from RegAllocBase.
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

11 years agoConvert RAGreedy to LiveRegMatrix interference checking.
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

11 years agoConvert RABasic to using LiveRegMatrix interference checking.
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

11 years agoEnable register unit liveness by default.
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

11 years agoTeach PBQPBuilder::build() about regunit interference.
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

11 years agoRestructure PopulateLoopsDFS::insertIntoLoop.
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

11 years agoSphixify the GEP FAQ.
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

11 years agoAvoid iterating with LiveIntervals::iterator.
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

11 years agoRevert r158846.
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

11 years agoIn MipsDisassembler.cpp, instead of defining register class tables, use the ones
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

11 years agoRemove an "else" that snuck in after a "return" ;)
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

11 years agoCheck that a file is not a directory before reading it into a MemoryBuffer.
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

11 years agoAdd "extern template" declarations now that we use explicit instantiation.
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

11 years agoAdd users of a MERGE_VALUE node to the worklist to process again when the node is...
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

11 years agoOnly update regunit live ranges that have been precomputed.
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

11 years agoreplace usage of EmitGEPOffset() with TargetData::getIndexedOffset() when the GEP...
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

11 years agoDelete dead code.
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

11 years agoAdd support for generating reg+reg (indexed) pre-inc loads on PPC.
Hal Finkel [Wed, 20 Jun 2012 15:43:03 +0000 (15:43 +0000)]
Add support for generating reg+reg (indexed) pre-inc loads on PPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158823 91177308-0d34-0410-b5e6-96231b3b80d8