Dan Gohman
045c2ae820
Make getNumContainedManagers and getNumContainedPasses const.
...
llvm-svn: 51087
2008-05-14 00:40:34 +00:00
Dan Gohman
75c583173c
Make PassInfo noncopyable.
...
llvm-svn: 51085
2008-05-14 00:39:39 +00:00
Devang Patel
06f96f31ce
Do not run instruction combiner in middle of loop optimization passes.
...
llvm-svn: 51084
2008-05-14 00:26:11 +00:00
Dan Gohman
4dc39991f8
Split the loop unroll mechanism logic out into a utility function.
...
Patch by Matthijs Kooijman!
llvm-svn: 51083
2008-05-14 00:24:14 +00:00
Owen Anderson
6a2ee9af7a
Fix Analysis/BasicAA/pure-const-dce.ll. This turned out to be a correctness
...
bug as well as a missed optimization. We weren't properly checking for local
dependencies before moving on to non-local ones when doing non-local read-only
call CSE.
llvm-svn: 51082
2008-05-13 23:18:30 +00:00
Gabor Greif
dd2f5c797d
Merge of r51073-51074 from use-diet branch.
...
Do not rely on std::swap<Use>, provide a (faster) member function instead.
This change is primarily necessitated by MSVC++'s incompatibility with
declaring std::swap<Use> to be a friend of Use.
Also contains some minor tweaks to Use inline functions,
to undo pointless changes that sneaked in with the last merge.
llvm-svn: 51078
2008-05-13 22:51:52 +00:00
Eric Christopher
4b7ff26ffd
Make this function public.
...
llvm-svn: 51077
2008-05-13 22:51:04 +00:00
Devang Patel
bae88af8c1
Dominance Frontier is cfg only pass.
...
llvm-svn: 51075
2008-05-13 22:43:21 +00:00
Owen Anderson
5e6431c140
Fix memdep's handling of invokes when finding the dependency of another call
...
instruction. This fixes some Ada miscompiles reported in PR2324.
llvm-svn: 51069
2008-05-13 21:25:37 +00:00
Chris Lattner
6f30057094
Update the Win32 project files, patch by Razvan Aciu!
...
llvm-svn: 51067
2008-05-13 20:56:51 +00:00
Dale Johannesen
676a1d026b
Fix for PR 2323, infinite loop in tail dup.
...
llvm-svn: 51063
2008-05-13 20:06:43 +00:00
Chris Lattner
a11adf725d
add a note
...
llvm-svn: 51062
2008-05-13 19:56:20 +00:00
Evan Cheng
cb56638548
- Fix the pasto in the fix for a previous pasto.
...
- Incorporate Chris' comment suggestion.
llvm-svn: 51061
2008-05-13 18:59:59 +00:00
Chris Lattner
c9eb6a7d64
add a note
...
llvm-svn: 51060
2008-05-13 18:48:54 +00:00
Dan Gohman
5bdb90a532
s/indicies/indices/ and clarify the extractvalue and insertvalue are
...
working with struct field or array element values. Thanks Duncan!
llvm-svn: 51059
2008-05-13 18:16:06 +00:00
Nate Begeman
c290daf581
Fix one more encoding bug.
...
llvm-svn: 51057
2008-05-13 17:52:09 +00:00
Sanjiv Gupta
c2219bf493
Added configure switches for PIC16 backend.
...
llvm-svn: 51056
2008-05-13 17:37:32 +00:00
Evan Cheng
cf6928983b
- Don't treat anyext 16-bit load as a 32-bit load if it's volatile.
...
- Correct a pasto.
llvm-svn: 51054
2008-05-13 16:45:56 +00:00
Anton Korobeynikov
5961d53986
Add thin layer over StringMap to form StringSet. By Mikhail Glushenkov.
...
llvm-svn: 51048
2008-05-13 15:03:16 +00:00
Owen Anderson
7f6db08b5f
Make the non-local CSE safety checks slightly more thorough.
...
llvm-svn: 51035
2008-05-13 13:41:23 +00:00
Sanjiv Gupta
fa065a1455
Adding files for Microchip's PIC16 target.
...
A brief description about PIC16:
===============================
PIC16 is an 8-bit microcontroller with only one 8-bit register which is the
accumulator. All arithmetic/load/store operations are 8-bit only.
The architecture has two address spaces: program and data. The program memory
is divided into 2K pages and the data memory is divided into banks of 128 byte, with only 80 usable bytes, resulting in an non-contiguous data memory.
It supports direct data memory access (by specifying the address as part of the instruction) and indirect data and program memory access (in an unorthodox fashion which utilize a 16 bit pointer register).
Two classes of registers exist: (8-bit class which is only one
accumulator) (16-bit class, which contains one or more 16 bit
pointer(s))
llvm-svn: 51027
2008-05-13 09:02:57 +00:00
Evan Cheng
9e15622879
Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset.
...
pshufd $1, (%rdi), %xmm0
movd %xmm0, %eax
=>
movl 4(%rdi), %eax
llvm-svn: 51026
2008-05-13 08:35:03 +00:00
Owen Anderson
f67c06279b
Add a testcase for non-local CSE of read-only calls.
...
llvm-svn: 51025
2008-05-13 08:17:44 +00:00
Owen Anderson
c54c61634c
Add support for non-local CSE of read-only calls.
...
llvm-svn: 51024
2008-05-13 08:17:22 +00:00
Gabor Greif
22afb1f8f0
Derive GetResultInst from UnaryInstruction, this simplifies code and removes a FIXME.
...
llvm-svn: 51023
2008-05-13 07:09:08 +00:00
Dan Gohman
138a53b303
Change class' public PassInfo variables to by initialized with the
...
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.
Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.
llvm-svn: 51022
2008-05-13 02:05:11 +00:00
Nate Begeman
b4412e7652
80 col / tabs fixes
...
llvm-svn: 51021
2008-05-13 01:48:26 +00:00
Nate Begeman
b9a3d141aa
Fix and encoding error in the psrad xmm, imm8 instruction.
...
llvm-svn: 51020
2008-05-13 01:47:52 +00:00
Evan Cheng
e4ee4c2870
On x86, it's safe to treat i32 load anyext as a normal i32 load. Ditto for i8 anyext load to i16.
...
llvm-svn: 51019
2008-05-13 00:54:02 +00:00
Dan Gohman
bab18cae46
Clean up the use of static and anonymous namespaces. This turned up
...
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
2008-05-13 00:00:25 +00:00
Dan Gohman
31a31d4511
Initial documentation for first-class aggregates changes.
...
llvm-svn: 51013
2008-05-12 23:51:09 +00:00
Dan Gohman
b3a433ed7b
Fix a malformed %gt;
...
llvm-svn: 51011
2008-05-12 23:38:42 +00:00
Nate Begeman
5d939498c3
Teach Legalize how to scalarize VSETCC
...
Teach X86 a few more vsetcc patterns. Custom lowering for unsupported ones is next.
llvm-svn: 51009
2008-05-12 23:09:43 +00:00
Evan Cheng
fcbdc8bd6e
Xform bitconvert(build_pair(load a, load b)) to a single load if the load locations are at the right offset from each other.
...
llvm-svn: 51008
2008-05-12 23:04:07 +00:00
Dale Johannesen
b54491d31a
New test for tail merging
...
llvm-svn: 51007
2008-05-12 22:59:44 +00:00
Dale Johannesen
b4da55c4a3
Be more aggressive about tail-merging small blocks
...
if those blocks consist entirely of common instructions;
merging will not add an extra branch in this case.
llvm-svn: 51006
2008-05-12 22:53:12 +00:00
Bill Wendling
2f2610cf51
Constify isSourceDefinedByImplicitDef function. Otherwise, just formatting
...
changes that don't change functionality.
llvm-svn: 51004
2008-05-12 22:15:05 +00:00
Bill Wendling
646f3458c4
Constify the machine instruction passed into the
...
"is{Trivially,Really}ReMaterializable" methods.
llvm-svn: 51001
2008-05-12 20:54:26 +00:00
Nate Begeman
2ae55cecc6
Initial X86 codegen support for VSETCC.
...
llvm-svn: 51000
2008-05-12 20:34:32 +00:00
Dale Johannesen
25896f8e93
Further rework of tail merge algorithm. Not quite
...
semantically identical, but little difference in
either results or execution speed; but it's much
easier to read, at least IMO.
llvm-svn: 50999
2008-05-12 20:33:57 +00:00
Nate Begeman
a3a9e89b61
Simplify some checks
...
llvm-svn: 50998
2008-05-12 20:33:52 +00:00
Dan Gohman
efa0925915
Fix a copy+paste bug; pseudo-instructions shouldn't have
...
encoding information.
llvm-svn: 50997
2008-05-12 20:22:45 +00:00
Nate Begeman
e9476924d9
Pointer comparisons should use icmp, not vicmp
...
llvm-svn: 50996
2008-05-12 20:16:55 +00:00
Owen Anderson
0256b368f8
Go back to passing the analyses around as parameters.
...
llvm-svn: 50995
2008-05-12 20:15:55 +00:00
Nate Begeman
b72a398339
Pointer comparisons should be handled by icmp, not vicmp :)
...
llvm-svn: 50994
2008-05-12 20:11:05 +00:00
Evan Cheng
228cce5b2d
Forgot this.
...
llvm-svn: 50993
2008-05-12 20:08:05 +00:00
Nate Begeman
6258a36fe3
Hard code CmpInst back to i1 for now while I go track down what in the bitcode reader/writer is assuming i1
...
This was breaking a bunch of tests
llvm-svn: 50992
2008-05-12 20:01:56 +00:00
Evan Cheng
c7e9acfed7
Refactor isConsecutiveLoad from X86 to TargetLowering so DAG combiner can make use of it.
...
llvm-svn: 50991
2008-05-12 19:56:52 +00:00
Bill Wendling
f3c4b7fbb5
Revert the previous commit. Go ahead and hoist rematerializable instructions.
...
llvm-svn: 50990
2008-05-12 19:47:18 +00:00
Nate Begeman
11c0772a30
Add support for vicmp/vfcmp codegen, more legalize support coming.
...
This is necessary to unbreak the build.
llvm-svn: 50988
2008-05-12 19:40:03 +00:00