Matthijs Kooijman
e7d45b1e49
Restructure the testing documentation.
...
I've tried to make the distinction between the DejaGNU tests and the test-suite
more clear, added a small section about generating output from the test-suite,
removed some duplication and fixed some wordings. Most of the changes are text
movements, however.
llvm-svn: 51480
2008-05-23 11:45:18 +00:00
Matthijs Kooijman
aef2b8198b
Restucture a part of the SimplifyCFG pass and include a testcase.
...
The SimplifyCFG pass looks at basic blocks that contain only phi nodes,
followed by an unconditional branch. In a lot of cases, such a block (BB) can
be merged into their successor (Succ).
This merging is performed by TryToSimplifyUncondBranchFromEmptyBlock. It does
this by taking all phi nodes in the succesor block Succ and expanding them to
include the predecessors of BB. Furthermore, any phi nodes in BB are moved to
Succ and expanded to include the predecessors of Succ as well.
Before attempting this merge, CanPropagatePredecessorsForPHIs checks to see if
all phi nodes can be properly merged. All functional changes are made to
this function, only comments were updated in
TryToSimplifyUncondBranchFromEmptyBlock.
In the original code, CanPropagatePredecessorsForPHIs looks quite convoluted
and more like stack of checks added to handle different kinds of situations
than a comprehensive check. In particular the first check in the function did
some value checking for the case that BB and Succ have a common predecessor,
while the last check in the function simply rejected all cases where BB and
Succ have a common predecessor. The first check was still useful in the case
that BB did not contain any phi nodes at all, though, so it was not completely
useless.
Now, CanPropagatePredecessorsForPHIs is restructured to to look a lot more
similar to the code that actually performs the merge. Both functions now look
at the same phi nodes in about the same order. Any conflicts (phi nodes with
different values for the same source) that could arise from merging or moving
phi nodes are detected. If no conflicts are found, the merge can happen.
Apart from only restructuring the checks, two main changes in functionality
happened.
Firstly, the old code rejected blocks with common predecessors in most cases.
The new code performs some extra checks so common predecessors can be handled
in a lot of cases. Wherever common predecessors still pose problems, the
blocks are left untouched.
Secondly, the old code rejected the merge when values (phi nodes) from BB were
used in any other place than Succ. However, it does not seem that there is any
situation that would require this check. Even more, this can be proven.
Consider that BB is a block containing of a single phi node "%a" and a branch
to Succ. Now, since the definition of %a will dominate all of its uses, BB
will dominate all blocks that use %a. Furthermore, since the branch from BB to
Succ is unconditional, Succ will also dominate all uses of %a.
Now, assume that one predecessor of Succ is not dominated by BB (and thus not
dominated by Succ). Since at least one use of %a (but in reality all of them)
is reachable from Succ, you could end up at a use of %a without passing
through it's definition in BB (by coming from X through Succ). This is a
contradiction, meaning that our original assumption is wrong. Thus, all
predecessors of Succ must also be dominated by BB (and thus also by Succ).
This means that moving the phi node %a from BB to Succ does not pose any
problems when the two blocks are merged, and any use checks are not needed.
llvm-svn: 51478
2008-05-23 09:09:41 +00:00
Matthijs Kooijman
f399bbf980
Indent fix.
...
llvm-svn: 51477
2008-05-23 07:57:02 +00:00
Nick Lewycky
3bf5512d87
Constant integer vectors may also be negated.
...
llvm-svn: 51476
2008-05-23 04:54:45 +00:00
Nick Lewycky
8f3127c5b5
Typo.
...
llvm-svn: 51475
2008-05-23 04:39:38 +00:00
Nick Lewycky
4f3d878507
Revert X + X --> X * 2 optz'n which pessimizes heavily on x86.
...
llvm-svn: 51474
2008-05-23 04:34:58 +00:00
Chris Lattner
3546c2b4e4
we compile multiply-by-constant into horrible code. Doesn't sse4 have some
...
instruction for doing this?
llvm-svn: 51473
2008-05-23 04:29:53 +00:00
Nick Lewycky
452fb32927
Implement X + X for vectors.
...
llvm-svn: 51472
2008-05-23 04:14:51 +00:00
Nick Lewycky
2ec9a01173
Fix a recently added optimization to not crash on vectors.
...
llvm-svn: 51471
2008-05-23 03:26:47 +00:00
Dan Gohman
6d5f120c5c
Generalize the new code in instcombine's ComputeNumSignBits for handling
...
and/or to handle more cases (such as this add-sitofp.ll testcase), and
port it to selectiondag's ComputeNumSignBits.
llvm-svn: 51469
2008-05-23 02:28:01 +00:00
Dan Gohman
30499844ea
Make structs and arrays first-class types, and add assembly
...
and bitcode support for the extractvalue and insertvalue
instructions and constant expressions.
Note that this does not yet include CodeGen support.
llvm-svn: 51468
2008-05-23 01:55:30 +00:00
Dan Gohman
53b2698531
Use isSingleValueType instead of isFirstClassType to
...
exclude struct and array types.
llvm-svn: 51467
2008-05-23 01:52:21 +00:00
Bill Wendling
6e326bf0fb
Remove warnings about comparison between signed and unsigned expressions.
...
llvm-svn: 51465
2008-05-23 01:29:08 +00:00
Dale Johannesen
fecb88249f
Allow for switch with no cases. Was causing fault
...
in gcc.dg/pr27531-1.c.
llvm-svn: 51464
2008-05-23 01:01:31 +00:00
Evan Cheng
f3be7a7ea7
Bug: rcpps can only folds a load if the address is 16-byte aligned. Fixed many 'ps' load folding patterns in X86InstrSSE.td which are missing the proper alignment checks.
...
Also fixed some 80 col. violations.
llvm-svn: 51462
2008-05-23 00:37:07 +00:00
Dan Gohman
0752bffe9a
Add more IR support for the new extractvalue and insertvalue
...
instructions.
llvm-svn: 51461
2008-05-23 00:36:11 +00:00
Dan Gohman
396ed504f1
Use isSingleValueType instead of isFirstClassType to
...
exclude struct and array types.
llvm-svn: 51460
2008-05-23 00:34:04 +00:00
Dan Gohman
30ab45d01e
Use isSingleValueType instead of isFirstClassType to
...
exclude struct and array types.
llvm-svn: 51459
2008-05-23 00:17:26 +00:00
Dale Johannesen
6b4dcc1c14
Put const weak stuff in appropriate section on Darwin.
...
g++.dg/abi/key2.C
llvm-svn: 51458
2008-05-23 00:16:59 +00:00
Dale Johannesen
5b74efd723
Make LTO expect common and weak to be represented differently.
...
Reading .bc files from before that change will no longer work.
llvm-svn: 51457
2008-05-23 00:15:10 +00:00
Dan Gohman
7a0566b9cd
Use isSingleValueType instead of isFirstClassType to
...
exclude struct and array types.
llvm-svn: 51456
2008-05-23 00:12:03 +00:00
Evan Cheng
97b020e61e
X86CodeEmitter should not set PIC style to None at initialization time. This will break codegen if relocation model is changed to PIC_ later.
...
llvm-svn: 51455
2008-05-22 23:55:24 +00:00
Dan Gohman
8830714bff
Use isSingleValueType instead of isFirstClassType to
...
exclude struct and array types.
llvm-svn: 51452
2008-05-22 23:43:22 +00:00
Dan Gohman
5477a1583a
Add a polygen grammar definition for LLVM assembly language.
...
llvm-svn: 51449
2008-05-22 22:45:03 +00:00
Dan Gohman
298a1d6d5f
Recognize the "default" keyword, which is documented in LangRef.html
...
and supported in the grammar, in the lexer.
llvm-svn: 51448
2008-05-22 22:30:09 +00:00
Evan Cheng
a1100782d5
Add a couple of test cases.
...
llvm-svn: 51441
2008-05-22 21:19:19 +00:00
David Greene
830487035e
When rewriting defs and uses after spilling, don't set the weight of a
...
live interval to infinity if the instruction being rewritten is an
original remat def instruction. We were only checking against the clone
of the remat def which doesn't actually appear in the IR at all.
llvm-svn: 51440
2008-05-22 21:16:33 +00:00
David Greene
54b52fe13b
Don't attempt to update SpillSlotToUsesMap for stack slots that aren't
...
generated by the spiller.
llvm-svn: 51439
2008-05-22 21:12:21 +00:00
Gabor Greif
ff77c8b608
transform more loops to iterator form, detabify
...
llvm-svn: 51436
2008-05-22 19:24:54 +00:00
Evan Cheng
53963b775e
Add missing patterns.
...
llvm-svn: 51435
2008-05-22 18:56:56 +00:00
Gabor Greif
6fb9d68206
Suppress warnings about missing placement delete. This should now be std-conformant even if compiled with exceptions on.
...
llvm-svn: 51429
2008-05-22 13:16:42 +00:00
Gabor Greif
b90b3728a7
Rewrite operand loops to use iterators. This shrinks .o file (at gcc4.0.1 -O3 x86) substantially (>500 bytes). Reason still unknown.
...
llvm-svn: 51423
2008-05-22 06:43:33 +00:00
Chris Lattner
3d1797ccaa
fix an off-by-one error in my previous patch, don't treat the callee as a incoming arg.
...
llvm-svn: 51422
2008-05-22 06:29:38 +00:00
Chris Lattner
79be90c3c7
Add support for multiple-return values in inline asm. This should
...
get inline asm working as well as it did previously with the CBE
with the new MRV support for inline asm.
llvm-svn: 51420
2008-05-22 06:19:37 +00:00
Chris Lattner
ee00d04da0
Fix PR2267, by allowing indirect outputs to be intermixed
...
with normal outputs. Testcase here:
test/CodeGen/X86/asm-indirect-mem.ll
llvm-svn: 51409
2008-05-22 04:46:38 +00:00
Chris Lattner
a87f1a568c
testcase for PR2267
...
llvm-svn: 51408
2008-05-22 04:45:22 +00:00
Chris Lattner
b0ccc8c8bb
Free and vaarg are not really volatile.
...
llvm-svn: 51407
2008-05-22 03:23:06 +00:00
Chris Lattner
c5ec1e19eb
rewrite the validity checking for memory promotion to be simpler,
...
more aggressive, and more correct. Verify that we only attempt to
promote loads and stores.
llvm-svn: 51406
2008-05-22 03:22:42 +00:00
Chris Lattner
92d7963325
minor edits
...
llvm-svn: 51405
2008-05-22 03:06:14 +00:00
Chris Lattner
f12c08dcd8
Use 'continue' to reduce nesting in this loop. No functionality change.
...
llvm-svn: 51399
2008-05-22 00:53:38 +00:00
Dan Gohman
da8fb59148
Add a Type::isSingleValueType method. This will be used by code
...
that currently uses Type::isFirstClassType and depends on it
returning false for struct or array types.
This commit doesn't change the behavior of Type::isFirstClassType.
llvm-svn: 51396
2008-05-21 23:35:53 +00:00
Evan Cheng
a5d27ae586
Fix PR2343. An *interesting* coalescer bug.
...
BB1:
vr1025 = copy vr1024
..
BB2:
vr1024 = op
= op vr1025
<loop eventually branch back to BB1>
Even though vr1025 is copied from vr1024, it's not safe to coalesced them since live range of vr1025 intersects the def of vr1024. This happens when vr1025 is assigned the value of the previous iteration of vr1024 in the loop.
llvm-svn: 51394
2008-05-21 22:34:12 +00:00
Bill Wendling
89c2e3babb
Follow-up to the reverting of r51218. This puts the checks out-of-line. Because
...
they aren't in the header file, systems with a <string> header file that isn't
64-bit clean shouldn't warn if #including Path.h and specifying
-Wshorten-64-to-32.
llvm-svn: 51393
2008-05-21 21:20:07 +00:00
Gabor Greif
f8d82e949a
update a comment
...
llvm-svn: 51390
2008-05-21 18:57:33 +00:00
Gabor Greif
e48de9c781
adapt to new API
...
llvm-svn: 51387
2008-05-21 18:30:15 +00:00
Evan Cheng
16f036cbe8
Rename -no-lazy to -disable-lazy-compilation.
...
llvm-svn: 51386
2008-05-21 18:20:21 +00:00
Nate Begeman
8f83fc4d9b
Fix a couple issues with the JIT and multiple modules:
...
1. The "JITState" object creates a PassManager with the ModuleProvider that the
jit is created with. If the ModuleProvider is removed and deleted, the
PassManager is invalid.
2. The Global maps in the JIT were not invalidated with a ModuleProvider was
removed. This could lead to a case where the Module would be freed, and a
new Module with Globals at the same addresses could return invalid results.
llvm-svn: 51384
2008-05-21 16:34:48 +00:00
Gabor Greif
78d66e4ac1
resurrect lost tests by renaming them to not end with .tr
...
llvm-svn: 51375
2008-05-21 14:48:24 +00:00
Gabor Greif
6e38b0ef41
suppress gcc3.4.6's <no value returned> warnings
...
llvm-svn: 51372
2008-05-21 14:07:30 +00:00
Dan Gohman
e62632e0bb
When LSR is replacing an instruction, call
...
ScalarEvolution::deleteValueFromRecords on it before doing the
replaceAllUsesWith, because ScalarEvolution looks at the instruction's
users to find SCEV references to the instruction's SCEV object in its
internal maps.
Move all of LSR's loop-related state clearing after processing the loop
and before cleaning up dead PHI nodes. This eliminates all of LSR's SCEV
references just before the calls to ScalarEvolution::deleteValueFromRecords
so that when ScalarEvolution drops its own SCEV references, the reference
counts will reach zero and the SCEVs will be deleted immediately.
These changes fix some compiler aborts involving ScalarEvolution holding
onto and reusing SCEV objects for instructions that have been deleted.
No regression test unfortunately; because the symptoms were due to
dangling pointers, reduced testcases ended up being fairly arbitrary.
llvm-svn: 51359
2008-05-21 00:54:12 +00:00
Bill Wendling
ff077b003b
Reverting r51218 because of breakage on PPC32.
...
llvm-svn: 51358
2008-05-20 23:54:27 +00:00
Gabor Greif
d01c562e48
Eliminate questionable syntax for stdin redirection. This probably also speeds things up a bit.
...
llvm-svn: 51357
2008-05-20 22:07:21 +00:00
Chris Lattner
b76ad168dc
Fix PR2346 by marking vaarg as volatile so that licm doesn't try to
...
hoist them.
llvm-svn: 51356
2008-05-20 22:05:28 +00:00
Dan Gohman
0843435b36
Oops, commit the version of this test that actually works.
...
llvm-svn: 51351
2008-05-20 21:19:36 +00:00
Dan Gohman
81ab753b14
Port SelectionDAG's ComputeNumSignBits-using code to instcombine,
...
now that instcombine also has ComputeNumSignBits.
llvm-svn: 51350
2008-05-20 21:01:12 +00:00
Gabor Greif
1e427c3264
sabre brings to my attention that the 'tr' suffix is also obsolete
...
llvm-svn: 51349
2008-05-20 21:00:03 +00:00
Dan Gohman
fe13618682
Port the fix for the select operator from instcombine's
...
ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.
llvm-svn: 51348
2008-05-20 20:59:51 +00:00
Dan Gohman
c1a4e212a3
Code simplification.
...
llvm-svn: 51345
2008-05-20 20:56:33 +00:00
Chris Lattner
b54c30fab3
Clarify that and/or/xor/sdiv etc all allow vectors.
...
llvm-svn: 51335
2008-05-20 20:48:21 +00:00
Chris Lattner
e1d4c2eceb
Clarify copyright transfer when you don't own the copyright of
...
the contributed code.
llvm-svn: 51329
2008-05-20 20:06:53 +00:00
Gabor Greif
f45ff35bfe
Rename the last test with .llx extension to .ll, resolve duplicate test by renaming to isnan2. Now that no test has llx ending there is no need to search for them from dg.exp too.
...
llvm-svn: 51328
2008-05-20 19:52:04 +00:00
Evan Cheng
f945f94397
movsd and movq do not require 16-byte alignment. This fixes vec_set-5.ll on Linux.
...
llvm-svn: 51327
2008-05-20 18:24:47 +00:00
Chris Lattner
b8b9805cc2
"The two generated files in the AsmParser.vcproj are pointing to the
...
wrong directory, this is the patch to fix it (also attached)."
Patch by 'OvermindDL1'
llvm-svn: 51323
2008-05-20 17:27:57 +00:00
Matthijs Kooijman
3f95ba0498
Clarify the testing documentation a bit and solve two HTML validator warnings.
...
llvm-svn: 51313
2008-05-20 10:28:55 +00:00
Evan Cheng
0609ab646b
More local spiller complexity!
...
If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB.
llvm-svn: 51306
2008-05-20 08:13:21 +00:00
Evan Cheng
c8b028daa4
Don't spill dead def.
...
llvm-svn: 51305
2008-05-20 08:10:37 +00:00
Matthijs Kooijman
5148a4ba66
Fix typo.
...
llvm-svn: 51303
2008-05-20 07:26:45 +00:00
Chris Lattner
7ac943fffd
Teach instcombine 4 new xforms:
...
(add (sext x), cst) --> (sext (add x, cst'))
(add (sext x), (sext y)) --> (sext (add int x, y))
(add double (sitofp x), fpcst) --> (sitofp (add int x, intcst))
(add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y))
This generally reduces conversions. For example MiBench/telecomm-gsm
gets these simplifications:
HACK2: %tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32 ; <i32> [#uses=1]
%tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32 ; <i32> [#uses=1]
%tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32 ; <i32> [#uses=1]
%tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32 ; <i32> [#uses=1]
%tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32 ; <i32> [#uses=1]
%tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32 ; <i32> [#uses=1]
%tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i ; <i32> [#uses=3]
HACK2: %tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i ; <i32> [#uses=3]
This also fixes a bug in ComputeNumSignBits handling select and
makes it more aggressive with and/or.
llvm-svn: 51302
2008-05-20 05:46:13 +00:00
Chris Lattner
9c27f96d04
fix two issues Neil noticed, thanks!
...
llvm-svn: 51296
2008-05-20 03:50:52 +00:00
Chris Lattner
f479856957
Add a bool to isEdgeFeasible that tells it whether to treat unknown
...
value as undef or untracked.
llvm-svn: 51295
2008-05-20 03:39:39 +00:00
Dan Gohman
69ddfbfe9e
Fix ExecutionEngine's constant code to work properly when structs and arrays
...
will become first-class types.
llvm-svn: 51293
2008-05-20 03:20:09 +00:00
Dan Gohman
e5572706e8
Refine the fix in r51169 to only apply when the operand val being
...
replaced is a PHI. This prevents it from inserting uses before defs
in the case that it isn't a PHI and it depends on other instructions
later in the block. This fixes the 447.dealII regression on x86-64.
llvm-svn: 51292
2008-05-20 03:01:48 +00:00
Evan Cheng
974722b16f
runOnMachineFunction should set IsPIC because relocation model may have been changed.
...
llvm-svn: 51291
2008-05-20 01:56:59 +00:00
Dan Gohman
d717761a2b
Make AssociativeOpt static.
...
llvm-svn: 51290
2008-05-20 01:14:05 +00:00
Dan Gohman
cd2e772d08
Run vortex-bug as x86-64, which is what the original bug was triggered on.
...
llvm-svn: 51289
2008-05-20 00:54:39 +00:00
Steve Naroff
0053c8aa87
Silence a warning about "*/" outside a comment.
...
llvm-svn: 51287
2008-05-20 00:46:15 +00:00
Devang Patel
ee7bf41c06
Do not erase induction variable increment if it is used outside the loop.
...
llvm-svn: 51280
2008-05-19 22:23:55 +00:00
Dan Gohman
123438cc05
Add a ComputeNumSignBits function for use by instcombine, based on the
...
code in SelectionDAG.
llvm-svn: 51279
2008-05-19 22:14:15 +00:00
Dale Johannesen
5bf742f2aa
Handle quoted names when constructing $stub's,
...
$non_lazy_ptr's and $lazy_ptr's.
llvm-svn: 51277
2008-05-19 21:38:18 +00:00
Chris Lattner
b42712288e
switch to Type::getFPMantissaWidth instead of reinventing it.
...
llvm-svn: 51275
2008-05-19 21:17:23 +00:00
Chris Lattner
c958c4c22c
add a helper method.
...
llvm-svn: 51274
2008-05-19 21:17:01 +00:00
Chris Lattner
ba9acbe6dc
minor cleanups, teach instcombine that sitofp/uitofp cannot
...
produce a negative zero.
llvm-svn: 51272
2008-05-19 20:27:56 +00:00
Chris Lattner
e35fe0f1c6
convert fptosi(sitofp x) -> x if the fp value has enough bits in its mantissa
...
to accurately represent the integer. This triggers 9 times in 471.omnetpp,
though 8 of those seem to be inlined from the same place.
llvm-svn: 51271
2008-05-19 20:25:04 +00:00
Chris Lattner
5920a78034
Fold FP comparisons where one operand is converted from an integer
...
type and the other operand is a constant into integer comparisons.
This happens surprisingly frequently (e.g. 10 times in 471.omnetpp),
which are things like this:
%tmp8283 = sitofp i32 %tmp82 to double
%tmp1013 = fcmp ult double %tmp8283, 0.0
Clearly comparing tmp82 against i32 0 is cheaper here.
this also triggers 8 times in gobmk, including this one:
%tmp375376 = sitofp i32 %tmp375 to double
%tmp377 = fcmp ogt double %tmp375376, 8.150000e+01
which is comparing an integer against 81.5 :).
llvm-svn: 51268
2008-05-19 20:18:56 +00:00
Bill Wendling
14dd4ffd06
Remove warnings about unused parameters and shadowed variables.
...
llvm-svn: 51266
2008-05-19 20:15:12 +00:00
Chris Lattner
6e70830af9
remove debug output
...
llvm-svn: 51264
2008-05-19 20:03:53 +00:00
Chris Lattner
fc365b60dc
be more aggressive about transforming add -> or when the operands have no
...
intersecting bits. This triggers all over the place, for example in lencode,
with adds of stuff like:
%tmp580 = mul i32 %tmp579, 2
%tmp582 = and i32 %b8, 1
and
%tmp28 = shl i32 %abs.i, 1
%sign.0 = select i1 %tmp23, i32 1, i32 0
and
%tmp344 = shl i32 %tmp343, 2
%tmp346 = and i32 %tmp96, 3
etc.
llvm-svn: 51263
2008-05-19 20:01:56 +00:00
Duncan Sands
f767e44ed6
Check that always_inline functions are inlined
...
whether or not -funit-at-a-time is used (C++ uses
it, C doesn't) - it was working before only when
not doing unit-at-a-time.
llvm-svn: 51258
2008-05-19 16:44:44 +00:00
Duncan Sands
eec7a3c071
Fix PR2341 - when the length is 4 use an i32 not
...
an i16! Cleaned up trailing whitespace while there.
llvm-svn: 51240
2008-05-19 09:27:24 +00:00
Gordon Henriksen
8bd151d194
Reverting accidental commit of generated files.
...
llvm-svn: 51239
2008-05-19 05:57:12 +00:00
Gordon Henriksen
00889ccfca
Remove a duplicative binding. Patch by Mahadevan R.
...
llvm-svn: 51238
2008-05-19 05:47:10 +00:00
Ted Kremenek
d85bf73e2e
Update VS project files (VS 2005) so that VS builds with TOT LLVM/clang.
...
Patch by Dmitri Makarov!
llvm-svn: 51237
2008-05-19 02:49:39 +00:00
Bill Wendling
d01e263f39
Grammar fix.
...
llvm-svn: 51236
2008-05-19 00:25:01 +00:00
Bill Wendling
acbcce41cb
Delete module.
...
llvm-svn: 51235
2008-05-19 00:20:45 +00:00
Bill Wendling
8912f21250
Convert non-ASCII apostrophes into ASCII apostrophes.
...
llvm-svn: 51234
2008-05-19 00:19:02 +00:00
Bill Wendling
08226ea2ee
Delete the Module object.
...
llvm-svn: 51233
2008-05-19 00:15:33 +00:00
Bill Wendling
dc73a703db
s/insure/ensure/
...
llvm-svn: 51232
2008-05-19 00:05:30 +00:00
Nate Begeman
65720c968c
Teach GVN to not assert on vector comparisons
...
llvm-svn: 51230
2008-05-18 19:49:05 +00:00
Nate Begeman
7af15f17b5
Fix a backwards check in the JIT symbol table code
...
llvm-svn: 51229
2008-05-18 19:09:10 +00:00
Chris Lattner
e2846b6929
add missing #include.
...
llvm-svn: 51227
2008-05-18 14:24:58 +00:00
Chris Lattner
4b2a724fb8
Fix PR2339
...
llvm-svn: 51226
2008-05-18 04:11:26 +00:00
Chris Lattner
14b3604dcf
remove empty file?
...
llvm-svn: 51225
2008-05-18 04:10:18 +00:00
Nick Lewycky
eb185ca5e9
Revert constant-folding change that will miscompile in some cases.
...
llvm-svn: 51223
2008-05-17 19:00:05 +00:00
Chris Lattner
1bafa6c886
trip count computation deficiency
...
llvm-svn: 51222
2008-05-17 15:37:38 +00:00
Bill Wendling
d70febc73b
On Darwin, the string header file isn't 64-bit clean. The use of
...
"-Wshorten-64-to-32 -Werror" will cause a failure when compiling this complex
program:
#include <string>
class Path {
mutable std::string path;
public:
bool operator == (const Path &that) {
return path == that.path;
}
};
Using strcmp gets us past this annoying error.
llvm-svn: 51218
2008-05-17 09:10:40 +00:00
Nick Lewycky
79d681dddd
Unbreak the build.
...
llvm-svn: 51217
2008-05-17 09:05:22 +00:00
Nick Lewycky
1ba90bb69b
Constant fold inttoptr and ptrtoint.
...
llvm-svn: 51216
2008-05-17 09:03:26 +00:00
Nick Lewycky
79376f4e02
Move isTrueWhenEqual to ICmpInst.
...
llvm-svn: 51215
2008-05-17 07:33:39 +00:00
Dale Johannesen
5610dabac9
Less conservative verison of previous patch,
...
suggested by Duncan.
llvm-svn: 51211
2008-05-16 23:18:52 +00:00
Dale Johannesen
e45329448e
Add CommonLinkage, in a way that preserves the
...
behavior on old .bc files.
llvm-svn: 51210
2008-05-16 22:46:40 +00:00
Dale Johannesen
829dab0221
Add CommonLinkage to lto (treated same as weak AFAICT)
...
and llvm-nm (prints as C).
llvm-svn: 51209
2008-05-16 22:44:18 +00:00
Dale Johannesen
ab5b577a99
Add CommonLinkage.
...
llvm-svn: 51208
2008-05-16 22:42:11 +00:00
Dale Johannesen
e7f5bc2c3b
Weak functions not declared non-throwing might be
...
replaced at linktime with a body that throws, even
if the body in this file does not. Make PruneEH
be more conservative in this case.
g++.dg/eh/weak1.C
llvm-svn: 51207
2008-05-16 21:31:48 +00:00
Eric Christopher
901b1a75c9
Add functions to enable adding a single attribute to a function and
...
its associated call site.
llvm-svn: 51204
2008-05-16 20:39:43 +00:00
Dale Johannesen
2e1d5e487b
Record weak external linkage in a case where we were
...
missing it. gcc.dg/darwin-weakimport-2.c.
Handle common and weak differently for darwin ppc32.
llvm-svn: 51201
2008-05-16 20:09:25 +00:00
Gabor Greif
e1f6e4b21d
API change for {BinaryOperator|CmpInst|CastInst}::create*() --> Create. Legacy interfaces will be in place for some time. (Merge from use-diet branch.)
...
llvm-svn: 51200
2008-05-16 19:29:10 +00:00
Evan Cheng
9ac3631fa3
If the result of a BIT_CONVERT is a v1* vector, it doesn't mean its source is a v1* vector.
...
llvm-svn: 51192
2008-05-16 17:19:05 +00:00
Evan Cheng
a9a0c1570d
Fix test.
...
llvm-svn: 51191
2008-05-16 17:08:51 +00:00
Duncan Sands
67933e6692
Bill pointed out that system headers should be
...
included after local headers.
llvm-svn: 51187
2008-05-16 09:30:00 +00:00
Duncan Sands
70424d195a
Silence the compiler warning differently. The
...
original method caused gcc-4.2 to complain.
llvm-svn: 51186
2008-05-16 09:19:16 +00:00
Evan Cheng
c5c7a290e9
Re-enable tail duplication pass (now with default threshold down to 1 instruction).
...
llvm-svn: 51184
2008-05-16 07:57:10 +00:00
Evan Cheng
173a53f87c
Do not dup malloc, vector instructions, etc. Throttle the default theshold way down.
...
llvm-svn: 51183
2008-05-16 07:55:50 +00:00
Owen Anderson
c7d6eceb69
Remove ADCE's ability to delete loops. This ability is now implemented in a
...
safer manner by loop deletion.
llvm-svn: 51182
2008-05-16 04:34:51 +00:00
Owen Anderson
bdcf408d67
Move this test from ADCE to loop deletion, where it is more appropriate.
...
llvm-svn: 51181
2008-05-16 04:34:19 +00:00
Owen Anderson
ecc12fe81d
Use loop deletion instead of ADCE in these tests.
...
llvm-svn: 51180
2008-05-16 04:33:37 +00:00
Owen Anderson
ad5f211b48
Clean ups for loop deletion based on Chris' feedback.
...
Also, use SCEV to determine the trip count of the loop, which is more powerful
and accurate that Loop::getTripCount.
llvm-svn: 51179
2008-05-16 04:32:45 +00:00
Owen Anderson
00c7d82391
Use loop deletion instead of ADCE for removing loops.
...
llvm-svn: 51178
2008-05-16 04:27:38 +00:00
Owen Anderson
a74d72d01f
Fix this test. It was testing broken behavior in that it required ADCE to eliminate
...
a potentially infinite loop, which is undesirable. Instead, test the LICM behavior
that we're really interested in.
llvm-svn: 51177
2008-05-16 04:25:09 +00:00
Chris Lattner
5c953b7d27
implement PR2328.
...
llvm-svn: 51176
2008-05-16 02:59:42 +00:00
Dale Johannesen
0bf92b14f1
Use common where we mean common, not weak.
...
llvm-svn: 51173
2008-05-16 00:52:30 +00:00
Dale Johannesen
876dd3ca9e
Treat common as distinct from weak global on Darwin x86.
...
llvm-svn: 51172
2008-05-16 00:52:06 +00:00
Dan Gohman
2f156ae850
Revert the change from r51157 in
...
test/Verifier/2002-11-05-GetelementptrPointers.ll, which was incorrect.
Instead, fix getIndexedType to not follow pointer types, as
PointerType is a subclass of CompositeType.
llvm-svn: 51171
2008-05-16 00:16:32 +00:00
Dan Gohman
32db11b634
Update comments based on Duncan's feedback.
...
llvm-svn: 51170
2008-05-15 23:35:32 +00:00
Dan Gohman
0a0fa7cf78
Fix a bug in LoopStrengthReduce that caused it to emit IR with
...
use-before-def. The problem comes up in code with multiple PHIs where
one PHI is being rewritten in terms of the other, but the other needs
to be casted first. LLVM rules requre the cast instruction to be
inserted after any PHI instructions, but when instructions were
inserted to replace the second PHI value with a function of the first,
they were ended up going before the cast instruction. Avoid this
problem by remembering the location of the cast instruction, when one
is needed, and inserting the expansion of the new value after it.
This fixes a bug that surfaced in 255.vortex on x86-64 when
instcombine was removed from the middle of the loop optimization
passes.
llvm-svn: 51169
2008-05-15 23:26:57 +00:00
Dale Johannesen
2918b0ec2f
Remove the S92 code, which really has nothing to do
...
with what the test is testing; makes it pass again on ppc32.
llvm-svn: 51167
2008-05-15 22:23:54 +00:00
Dale Johannesen
5c7dd286a4
Evan has implemented this on ppc, so run the test there.
...
llvm-svn: 51166
2008-05-15 22:22:37 +00:00
Evan Cheng
29e59ad6c9
Fix typos and comments.
...
llvm-svn: 51165
2008-05-15 22:13:02 +00:00
Dale Johannesen
6ef726a066
Allow an extra bit for CommonLinkage.
...
This changes the .bc file format, but if I understand
how it works correctly, old .bc files continue to
be readable.
llvm-svn: 51161
2008-05-15 20:49:28 +00:00
Nate Begeman
f79f52282c
Actually scalarize the operand to BIT_CONVERT instead of asking someone to do
...
something with a v1 type.
llvm-svn: 51160
2008-05-15 20:40:58 +00:00
Steve Naroff
30deeca433
Reverting r51100...I need to use VC++ 2005.
...
llvm-svn: 51159
2008-05-15 20:09:48 +00:00
Dan Gohman
12fce7751b
IR support for extractvalue and insertvalue instructions. Also, begin
...
moving toward making structs and arrays first-class types.
llvm-svn: 51157
2008-05-15 19:50:34 +00:00
Dan Gohman
f52c8044ea
Use static and anonymous namespaces consistently with other passes.
...
llvm-svn: 51156
2008-05-15 19:43:55 +00:00
Devang Patel
a403c15d40
Revert 51067 check-in for now.
...
llvm-svn: 51155
2008-05-15 18:46:28 +00:00
Devang Patel
61724355af
Remove useless check.
...
Patch by Matthijs Kooijman.
llvm-svn: 51154
2008-05-15 18:04:29 +00:00
Evan Cheng
d37a6cf669
Disable JIT symbol table for now.
...
llvm-svn: 51152
2008-05-15 17:31:35 +00:00
Duncan Sands
783cb2d76d
Use of UINT_MAX requires climits, at least when
...
compiling with gcc 4.3.
llvm-svn: 51145
2008-05-15 11:22:50 +00:00
Gabor Greif
697e94cc22
Fix a bunch of 80col violations that arose from the Create API change. Tweak makefile targets to find these better.
...
llvm-svn: 51143
2008-05-15 10:04:30 +00:00
Evan Cheng
ef377adca0
Make use of vector load and store operations to implement memcpy, memmove, and memset. Currently only X86 target is taking advantage of these.
...
llvm-svn: 51140
2008-05-15 08:39:06 +00:00
Evan Cheng
13e693f331
Remove tail duplication pass.
...
llvm-svn: 51139
2008-05-15 07:43:15 +00:00
Nate Begeman
60f9320fc5
Move the operator new and operator delete out of line. This fixes an issue with
...
operator new() referring to the static initTags function, which has to be in the
same linkage unit as any file including User.h.
llvm-svn: 51136
2008-05-15 01:23:11 +00:00
Dale Johannesen
fa48372a24
Don't assume underlying APInt type is limited
...
to 64 bits.
llvm-svn: 51135
2008-05-14 22:53:25 +00:00
Bill Wendling
3716952f10
Situations can arise when you have a function called that returns a 'void', but
...
is bitcast to return a floating point value. The result of the instruction may
not be used by the program afterwards, and LLVM will happily remove all
instructions except the call. But, on some platforms, if a value is returned as
a floating point, it may need to be removed from the stack (like x87). Thus, we
can't get rid of the bitcast even if there isn't a use of the value.
llvm-svn: 51134
2008-05-14 22:45:20 +00:00
Dale Johannesen
8d76cdb144
Remove undefined behavior in hex string->APFloat
...
conversion. Try 0x1.0000a4p+0f. Neil, please review.
llvm-svn: 51132
2008-05-14 22:05:31 +00:00
Evan Cheng
4ea9d49590
Use a better idiom to silence compiler warnings.
...
llvm-svn: 51131
2008-05-14 21:08:07 +00:00
Chris Lattner
e15051d64b
rename SimplifyCFG.cpp -> SimplifyCFGPass.cpp
...
llvm-svn: 51130
2008-05-14 20:38:44 +00:00
Evan Cheng
ad2b7a7b97
Silence warnings.
...
llvm-svn: 51129
2008-05-14 20:33:21 +00:00
Nate Begeman
7402017b9a
Add support to IR builder for new vicmp, vfcmp routines
...
llvm-svn: 51127
2008-05-14 20:29:46 +00:00
Evan Cheng
0f7fb95e79
Really silence compiler warnings.
...
llvm-svn: 51126
2008-05-14 20:29:30 +00:00
Nate Begeman
94849f2246
Don't generate unused variables in a no-assert build
...
Add some checks to the new vicmp,vfcmp instructions
llvm-svn: 51125
2008-05-14 20:28:31 +00:00
Evan Cheng
a5b0a8d7fe
Really silence compiler warnings.
...
llvm-svn: 51123
2008-05-14 20:26:35 +00:00
Dale Johannesen
21160df793
CommonLinkage (missed a file)
...
llvm-svn: 51120
2008-05-14 20:14:09 +00:00
Dale Johannesen
5c1b6db9ed
Generated files for CommonLinkage.
...
llvm-svn: 51119
2008-05-14 20:13:36 +00:00
Dale Johannesen
ce4396bc92
Add CommonLinkage; currently tentative definitions
...
are represented as "weak", but there are subtle differences
in some cases on Darwin, so we need both. The intent
is that "common" will behave identically to "weak" unless
somebody changes their target to do something else.
No functional change as yet.
llvm-svn: 51118
2008-05-14 20:12:51 +00:00
Evan Cheng
763ec13862
Silence some compiler warnings.
...
llvm-svn: 51115
2008-05-14 20:07:51 +00:00
Devang Patel
f2763e233e
Simplify internalize pass. Add test case.
...
Patch by Matthijs Kooijman!
llvm-svn: 51114
2008-05-14 20:01:01 +00:00
Dan Gohman
3ab94df276
When bit-twiddling CondCode values for integer comparisons produces
...
SETOEQ, is it does with (SETEQ & SETULE), map it to SETEQ.
llvm-svn: 51112
2008-05-14 18:17:09 +00:00
Devang Patel
38e59eb0c7
Recover nestedloop regression reported by nightly tester.
...
llvm-svn: 51110
2008-05-14 18:04:30 +00:00
Tanya Lattner
f85405fced
Check if llvm-gcc is available before running tests. Patch by Matthijs Kooijman!
...
llvm-svn: 51108
2008-05-14 16:32:44 +00:00
Sanjiv Gupta
7fc6027873
Detabification. Fixed indentation and spacing.
...
Changed cout to DOUT, and TODOs to FIXMEs.
Other changes as per coding conventions.
llvm-svn: 51105
2008-05-14 11:31:39 +00:00
Roman Levenstein
52a005ac13
Do not generate by TableGen the hard-coded standard, target-independent part of
...
DAG instruction selectors. Introudce a dedicated header file for this part:
include/llvm/CodeGen/DAGISelHeader.h
TableGen now only generates the include preprocessor directive to include this
new header.
This is a preparation for supporting multiple implementations of instruction
selectors in the future.
Reviewed and approved by Evan and Dan.
llvm-svn: 51102
2008-05-14 10:17:11 +00:00
Argyrios Kyrtzidis
b527271a2c
Upgrading clang VC++ solution to VC++ express 2008.
...
llvm-svn: 51100
2008-05-14 09:58:45 +00:00
Duncan Sands
a0ae8cebec
Make this test pass on x86-32 linux.
...
llvm-svn: 51099
2008-05-14 09:46:01 +00:00
Argyrios Kyrtzidis
c279c59d7b
Adding missing files to Transforms and VMCore VC++ projects.
...
llvm-svn: 51098
2008-05-14 09:39:32 +00:00
Arnold Schwaighofer
2c6b88816d
Add documentation for tail call optimization to CodeGenerator.html. Add a link
...
referring to it to LangRef.html.
llvm-svn: 51097
2008-05-14 09:17:12 +00:00
Sanjiv Gupta
83a510ca59
Added configure switches for PIC16 in configure.ac.
...
Regenerated configure.
llvm-svn: 51096
2008-05-14 08:03:23 +00:00
Nicolas Geoffray
fbdca96469
Fix typo in ParameterAttribute fields usage. Add an include
...
to make the Cpp backend output compilable.
llvm-svn: 51095
2008-05-14 07:52:03 +00:00
Sanjiv Gupta
1f8c9ef4cc
Fixed the file description header at the top to remove the developer name.
...
llvm-svn: 51094
2008-05-14 06:50:01 +00:00
Dan Gohman
f41600da59
Commit the header I accidentally left out of 51083.
...
llvm-svn: 51093
2008-05-14 04:39:40 +00:00
Evan Cheng
6f34ed0d36
Doh. Alignment is in bytes, not in bits.
...
llvm-svn: 51092
2008-05-14 02:49:43 +00:00
Dan Gohman
eabd647cd5
Change target-specific classes to use more precise static types.
...
This eliminates the need for several awkward casts, including
the last dynamic_cast under lib/Target.
llvm-svn: 51091
2008-05-14 01:58:56 +00:00
Dan Gohman
0f45b6fda5
Move RemoveFromVector out of the global namespace.
...
llvm-svn: 51090
2008-05-14 01:02:49 +00:00
Dan Gohman
fd3e3003f3
Whitespace cleanups.
...
llvm-svn: 51089
2008-05-14 00:43:10 +00:00
Dan Gohman
4e974ab933
Make PreVerifyID, IntSigsEnd, and KillSigsEnd const.
...
llvm-svn: 51088
2008-05-14 00:42:30 +00:00
Dan Gohman
c92abb44db
Make getNumContainedManagers and getNumContainedPasses const.
...
llvm-svn: 51087
2008-05-14 00:40:34 +00:00
Dan Gohman
1453fd6de6
Make PassInfo noncopyable.
...
llvm-svn: 51085
2008-05-14 00:39:39 +00:00
Devang Patel
a37cf46c87
Do not run instruction combiner in middle of loop optimization passes.
...
llvm-svn: 51084
2008-05-14 00:26:11 +00:00
Dan Gohman
3dc2d92ebd
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
17816b321f
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
5ef7404dc7
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
29fafcccd3
Make this function public.
...
llvm-svn: 51077
2008-05-13 22:51:04 +00:00
Devang Patel
a9fcf009a3
Dominance Frontier is cfg only pass.
...
llvm-svn: 51075
2008-05-13 22:43:21 +00:00
Owen Anderson
3ab976a21f
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
bb3aef4ee3
Update the Win32 project files, patch by Razvan Aciu!
...
llvm-svn: 51067
2008-05-13 20:56:51 +00:00
Dale Johannesen
e695ab227c
Fix for PR 2323, infinite loop in tail dup.
...
llvm-svn: 51063
2008-05-13 20:06:43 +00:00
Chris Lattner
03ce206143
add a note
...
llvm-svn: 51062
2008-05-13 19:56:20 +00:00
Evan Cheng
f8ab712fa9
- 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
d17f58ae6e
add a note
...
llvm-svn: 51060
2008-05-13 18:48:54 +00:00
Dan Gohman
35a835cb60
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
6645714f16
Fix one more encoding bug.
...
llvm-svn: 51057
2008-05-13 17:52:09 +00:00
Sanjiv Gupta
f6387983e8
Added configure switches for PIC16 backend.
...
llvm-svn: 51056
2008-05-13 17:37:32 +00:00
Evan Cheng
595e226085
- 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
5c48bae209
Add thin layer over StringMap to form StringSet. By Mikhail Glushenkov.
...
llvm-svn: 51048
2008-05-13 15:03:16 +00:00
Owen Anderson
8c2391d00d
Make the non-local CSE safety checks slightly more thorough.
...
llvm-svn: 51035
2008-05-13 13:41:23 +00:00
Sanjiv Gupta
4394c2376c
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
1120279ae6
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
525aa89356
Add a testcase for non-local CSE of read-only calls.
...
llvm-svn: 51025
2008-05-13 08:17:44 +00:00
Owen Anderson
69057b80c7
Add support for non-local CSE of read-only calls.
...
llvm-svn: 51024
2008-05-13 08:17:22 +00:00
Gabor Greif
0d42adf65b
Derive GetResultInst from UnaryInstruction, this simplifies code and removes a FIXME.
...
llvm-svn: 51023
2008-05-13 07:09:08 +00:00
Dan Gohman
0479aa5c0b
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
53c5c62d6d
80 col / tabs fixes
...
llvm-svn: 51021
2008-05-13 01:48:26 +00:00
Nate Begeman
50f7ef30bb
Fix and encoding error in the psrad xmm, imm8 instruction.
...
llvm-svn: 51020
2008-05-13 01:47:52 +00:00
Evan Cheng
3f40c69083
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
d78c400b5b
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
b9d6660998
Initial documentation for first-class aggregates changes.
...
llvm-svn: 51013
2008-05-12 23:51:09 +00:00
Dan Gohman
43ba067132
Fix a malformed %gt;
...
llvm-svn: 51011
2008-05-12 23:38:42 +00:00
Nate Begeman
b87e63a730
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
b980f6fb3d
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
e6942c31ea
New test for tail merging
...
llvm-svn: 51007
2008-05-12 22:59:44 +00:00
Dale Johannesen
9d29283fc7
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
6b8bd513d4
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
1e11768a4f
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
d875c3e2fd
Initial X86 codegen support for VSETCC.
...
llvm-svn: 51000
2008-05-12 20:34:32 +00:00
Dale Johannesen
c4c4d8e1f7
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
68586bddb1
Simplify some checks
...
llvm-svn: 50998
2008-05-12 20:33:52 +00:00
Dan Gohman
0863b19ae6
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
17c5434a16
Pointer comparisons should use icmp, not vicmp
...
llvm-svn: 50996
2008-05-12 20:16:55 +00:00
Owen Anderson
f792860255
Go back to passing the analyses around as parameters.
...
llvm-svn: 50995
2008-05-12 20:15:55 +00:00
Nate Begeman
66d0a0e8f4
Pointer comparisons should be handled by icmp, not vicmp :)
...
llvm-svn: 50994
2008-05-12 20:11:05 +00:00
Evan Cheng
5f52142ee0
Forgot this.
...
llvm-svn: 50993
2008-05-12 20:08:05 +00:00
Nate Begeman
1196287522
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
2609d5e779
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
2930845065
Revert the previous commit. Go ahead and hoist rematerializable instructions.
...
llvm-svn: 50990
2008-05-12 19:47:18 +00:00
Nate Begeman
cfcb56091b
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
Bill Wendling
70613b84da
One real change - don't hoist something that's trivially rematerializable. It's
...
possible for it to produce worse code than before.
The rest of this patch is code cleanup.
llvm-svn: 50987
2008-05-12 19:38:32 +00:00
Nate Begeman
ac7f3d99dd
Fix build breakage
...
llvm-svn: 50986
2008-05-12 19:23:22 +00:00
Nate Begeman
d21957002a
Add two new instructions to the llvm IR, vicmp and vfcmp. see updated LangRef
...
for details. CodeGen support coming in a follow up patch
llvm-svn: 50985
2008-05-12 19:01:56 +00:00
Dan Gohman
02e5933fa3
Make firstEightPowers const.
...
llvm-svn: 50975
2008-05-12 16:38:14 +00:00
Dan Gohman
e9bc2ba256
Update comments.
...
llvm-svn: 50974
2008-05-12 16:34:30 +00:00
Mikhail Glushenkov
c79304461a
Filter option names to escape symbols not allowed as C++ identifiers.
...
Makes it possible to use options with names like "Wa,".
Also fixes the -Wall option handling as a side-effect.
llvm-svn: 50973
2008-05-12 16:33:06 +00:00
Mikhail Glushenkov
3f896c8d16
Make it possible to choose between different compilation graph definitions at compile-time.
...
llvm-svn: 50972
2008-05-12 16:32:24 +00:00
Mikhail Glushenkov
128349b8bf
Fix some error messages; Make LLVMC pass through the exit code of a failed tool.
...
llvm-svn: 50971
2008-05-12 16:31:42 +00:00
Dan Gohman
906716c40f
Fix a compile error on compilers that still want a return value
...
in a non-void function that calls abort.
llvm-svn: 50969
2008-05-12 16:17:19 +00:00
Dan Gohman
ecb77385ab
Fix a missing break in the ISD::FLT_ROUNDS_ handling. Patch by giuma!
...
llvm-svn: 50967
2008-05-12 16:07:15 +00:00
Duncan Sands
2b84ba4c9b
Testcase for PR2264.
...
llvm-svn: 50965
2008-05-12 13:01:19 +00:00
Owen Anderson
4afb1c864a
Move the various analyses used by GVN into static variables so we don't have to keep passing them around or refetching them.
...
llvm-svn: 50963
2008-05-12 08:15:27 +00:00
Chris Lattner
9fdb814a56
prune #includes.
...
llvm-svn: 50962
2008-05-12 01:13:53 +00:00
Chris Lattner
5287765d1a
Add a new SparsePropagation analysis utility, which allows you to do
...
SCCP like sparse lattice analysis with relative ease. Just pick your
lattice function and implement the transfer function and you're good.
Just make sure you don't break monotonicity ;-)
llvm-svn: 50961
2008-05-12 01:12:24 +00:00
Nick Lewycky
c38c1712f7
Make constructors target-specific. This fixes problems where the path would
...
include backslashes on Windows. This should fix llvm-ld problems on win32.
llvm-svn: 50960
2008-05-11 17:37:40 +00:00
Anton Korobeynikov
a38e72d247
Add note
...
llvm-svn: 50959
2008-05-11 14:33:15 +00:00
Chris Lattner
47fed61526
Fix various DOUTs to not call the extremely expensive Value::getName()
...
method. DOUT statements are disabled when assertions are off, but the
side effects of getName() are still evaluated. Just call getNameSTart,
which is close enough and doesn't cause heap traffic.
llvm-svn: 50958
2008-05-11 01:55:59 +00:00