Evan Cheng
ff50061170
Vector fneg must be expanded into fsub -0.0, X.
...
llvm-svn: 40586
2007-07-30 07:51:22 +00:00
Christopher Lamb
0df2d6e9e5
Add tests for generating noalias parameter attribute from __restrict qualified function parameters. C++ tests are currently XFAILing see PR1582.
...
llvm-svn: 40583
2007-07-29 23:29:16 +00:00
Reid Spencer
3df94811d2
Be explicit about which level of optimization is being asked for. The -O option
...
is equivalent to -O1.
llvm-svn: 40581
2007-07-29 18:23:22 +00:00
Christopher Lamb
919ce03da6
Change the x86 backend to use extract_subreg for truncation operations. Passes DejaGnu, SingleSource and MultiSource.
...
llvm-svn: 40578
2007-07-29 01:24:57 +00:00
Christopher Lamb
4120412f3e
Add register info needed to use subreg sets on X86.
...
llvm-svn: 40572
2007-07-28 19:03:30 +00:00
Nick Lewycky
391b3e4b4c
Make this explictly signed. Fixes PR1571.
...
llvm-svn: 40569
2007-07-28 16:43:10 +00:00
Devang Patel
780ecf20d1
Add facility to dump pass manager structure
...
to make it easier to understand failure.
llvm-svn: 40567
2007-07-27 20:06:09 +00:00
Duncan Sands
35a77d857b
Trampoline codegen support for X86-32.
...
llvm-svn: 40566
2007-07-27 20:02:49 +00:00
Duncan Sands
79f8131398
Forget to add 'nest' to the list of parameter
...
attributes.
llvm-svn: 40565
2007-07-27 19:57:41 +00:00
Devang Patel
20ffab9de6
Fix edge cases in handling basic block split.
...
llvm-svn: 40564
2007-07-27 19:13:43 +00:00
Devang Patel
a03e82d7ee
Use SmallPtrSet.
...
llvm-svn: 40560
2007-07-27 18:34:27 +00:00
Chuck Rose III
4a3a018844
VStudio compiler errors and placing Function*->ExFunc map under ManagedStatic control.
...
This commit fixes two things. One is a pair of VStudio compiler errors stemming from variables
which defined within the for loop statement and also within the body of the for loop. I fixed these
by renaming one of the two variables. Additionally, I've made the Function*->ExFunc map in
ExternalFunctions.cpp a ManagedStatic object, so that cleanup will be done on llvm_shutdown. In repeated
uses of the interpreter, where the same Function* address may get used for completely differnet functions,
this was causing a crash.
llvm-svn: 40558
2007-07-27 18:26:35 +00:00
Chuck Rose III
626679379c
Updates to the VStudio project files:
...
1. Switch from VStudio 2k3 to VStudio 2k5
2. All pdb files now will be placed as $(OutputDir)/$(ProjectName).pdb. This puts them alongside the
binaries with the same base name as the binary. If you need to copy the results of your llvm build
into another project's tree, this will simplify that process.
3. Recent files added to the tree were added to the proejects within the VStudio project
4. Project build dependency order fixed so that the build can take place in one pass. A generated
file was not being built at the correct time, causing a build error in about half the projects until
the build was run a second time.
Note you will need flex and bison installed an in your path in order to build properly.
llvm-svn: 40557
2007-07-27 18:20:11 +00:00
Owen Anderson
997b15d967
Allow SmallPtrSet to hold pointers to const data.
...
llvm-svn: 40556
2007-07-27 18:07:02 +00:00
Dan Gohman
0252aa07ee
Re-apply 40504, but with a fix for the segfault it caused in oggenc:
...
Make the alignedload and alignedstore patterns always require 16-byte
alignment. This way when they are used in the "Fs" instructions, in which
a vector instruction is used for a scalar purpose, they can still require
the full vector alignment. And add a regression test for this.
llvm-svn: 40555
2007-07-27 17:16:43 +00:00
Duncan Sands
88c9f25dbc
It seems logical that InReg should be incompatible
...
with StructReturn and ByVal, so make it so.
llvm-svn: 40554
2007-07-27 16:45:18 +00:00
Duncan Sands
b7b28dc6d0
As the number of parameter attributes increases,
...
Verifier::visitFunction is suffering a combinatorial
explosion due to the number of mutually incompatible
attributes. This patch tidies the whole thing up
using attribute masks. While there I fixed some
small bugs: (1) the ByVal attribute tests cast a
type to a pointer type, which can fail. Yes, the
fact it is of a pointer type is checked before,
but a failing check does not cause the program
to exit, it continues on outputting further errors;
(2) Nothing was checking that an sret attribute is
on the first parameter; (3) nothing was checking that
a function for which isStructReturn() is true has a
parameter with the sret attribute and vice-versa (I
don't think it is possible for this to go wrong, but
it seems right to check it).
llvm-svn: 40553
2007-07-27 15:09:54 +00:00
Duncan Sands
e8bb2c6d32
Support for trampolines, except for X86 codegen which is
...
still under discussion.
llvm-svn: 40549
2007-07-27 12:58:54 +00:00
Christopher Lamb
55a1e36013
Move subreg lowering pass to be right after regalloc, per feedback.
...
llvm-svn: 40548
2007-07-27 07:36:14 +00:00
Evan Cheng
cb8f08ebca
Reverting 40504 for now. It's breaking oggenc.
...
llvm-svn: 40547
2007-07-27 01:37:47 +00:00
Devang Patel
4dea53597a
Fix thinko. Update return status appropriately.
...
llvm-svn: 40546
2007-07-26 20:21:42 +00:00
Owen Anderson
ed3e63a203
Fix a bug introduced in my last commit.
...
llvm-svn: 40542
2007-07-26 18:57:04 +00:00
Owen Anderson
f2b10d3de3
Fix a couple more bugs in the phi construction by pulling in code that does
...
almost the same things from LCSSA.
llvm-svn: 40540
2007-07-26 18:26:51 +00:00
Evan Cheng
7b20c11ccf
Test case for PR1573.
...
llvm-svn: 40539
2007-07-26 17:45:57 +00:00
Evan Cheng
ffa8cbd22b
Make sure epilogue esp adjustment is placed before any terminator and pop instructions.
...
llvm-svn: 40538
2007-07-26 17:45:41 +00:00
Evan Cheng
ea037bffd2
Don't pollute the meaning of isUnpredicatedTerminator.
...
llvm-svn: 40537
2007-07-26 17:32:14 +00:00
Evan Cheng
a681654ef4
Fix test.
...
llvm-svn: 40536
2007-07-26 17:07:03 +00:00
Evan Cheng
9802b13b38
Minor bug.
...
llvm-svn: 40535
2007-07-26 17:02:45 +00:00
Dan Gohman
249090568d
Fix the alias analysis query in DAGCombiner to not add in two
...
offsets. The SrcValueOffset values are the real offsets from the
SrcValue base pointers.
llvm-svn: 40534
2007-07-26 16:14:06 +00:00
Dan Gohman
298f3fd9b7
Move the GET_SIDE_EFFECT_INFO logic from isInstructionTriviallyDead
...
to Instruction::mayWriteToMemory, fixing a FIXME, and helping
various places that call mayWriteToMemory directly.
llvm-svn: 40533
2007-07-26 16:06:08 +00:00
Dan Gohman
fd392a7a51
Remove a bogus return statement, what appears to have been a pasto
...
from Relation::contradicts in Relation::incorporate.
llvm-svn: 40531
2007-07-26 15:29:35 +00:00
Dan Gohman
c63ddf2f57
DummyInst's member functions don't need to be virtual.
...
llvm-svn: 40530
2007-07-26 15:25:08 +00:00
Dan Gohman
d3a062f01b
In the .loc directive, print the fields as "debug" fields, so they
...
don't get decorated as if for immediate fields for instructions.
llvm-svn: 40529
2007-07-26 15:24:15 +00:00
Dan Gohman
1bfc3f0d09
Fix a whitespace difference between CMPSSrr and CMPSDrr.
...
llvm-svn: 40528
2007-07-26 15:11:50 +00:00
Dan Gohman
b7c799015b
Fix a pasto in a comment.
...
llvm-svn: 40527
2007-07-26 15:11:00 +00:00
Christopher Lamb
258dab5389
Add a MachineFunction pass, which runs post register allocation, that turns subreg insert/extract instruction into register copies. This ensures correct code gen if the coalescer isn't able to remove all subreg instructions.
...
llvm-svn: 40521
2007-07-26 08:18:32 +00:00
Christopher Lamb
08bcd5c0f8
Teach DAG scheduling how to properly emit subreg insert/extract machine instructions. PR1350
...
llvm-svn: 40520
2007-07-26 08:12:07 +00:00
Christopher Lamb
7bef240f69
Have register info provide the inverse mapping of register->superregisters. PR1350
...
llvm-svn: 40519
2007-07-26 08:01:58 +00:00
Christopher Lamb
9a0d88efde
Add target independent MachineInstr's to represent subreg insert/extract in MBB's. PR1350
...
llvm-svn: 40518
2007-07-26 07:48:21 +00:00
Evan Cheng
413d222576
Same goes for constantpool, etc.
...
llvm-svn: 40517
2007-07-26 07:35:15 +00:00
Christopher Lamb
73c3cd47cc
Add selection DAG nodes for subreg insert/extract. PR1350
...
llvm-svn: 40516
2007-07-26 07:34:40 +00:00
Christopher Lamb
2d47a6faec
Fix 80 col violation.
...
llvm-svn: 40515
2007-07-26 07:03:08 +00:00
Christopher Lamb
cb63a77a51
Remove subreg index from MachineInstr's and also keep vregs as unsigned when adding operands.
...
llvm-svn: 40514
2007-07-26 07:00:46 +00:00
Christopher Lamb
954afaa83f
Teach TableGen about the new vector types.
...
llvm-svn: 40513
2007-07-26 06:41:18 +00:00
Christopher Lamb
b178ecbbc0
Fix infinite recursion for when extract_vector_elt is legal. Unfortunately no public targets use this code-path, so no test.
...
llvm-svn: 40510
2007-07-26 03:33:13 +00:00
Christopher Lamb
fb7a157ebc
Fix comments for new types.
...
llvm-svn: 40507
2007-07-26 01:48:57 +00:00
Christopher Lamb
f3881994a7
Add support for 3 element 32-bit vector ValueTypes.
...
llvm-svn: 40506
2007-07-26 01:46:52 +00:00
Dan Gohman
513dcba4f8
Remove X86ISD::LOAD_PACK and X86ISD::LOAD_UA and associated code from the
...
x86 target, replacing them with the new alignment attributes on memory
references.
llvm-svn: 40504
2007-07-26 00:31:09 +00:00
Owen Anderson
ed75133924
Fix what is _hopefully_ the last corner case for loops.
...
llvm-svn: 40503
2007-07-25 23:54:42 +00:00
Evan Cheng
9588231d34
Mac OS X x86-64 lower 4G address is not available.
...
llvm-svn: 40502
2007-07-25 23:41:36 +00:00