Commit Graph

5160 Commits

Author SHA1 Message Date
Lauro Ramos Venancio
2c5c111b6c X86 TLS: Implement review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36318 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 20:56:26 +00:00
Reid Spencer
c67bdc288a Revert Christopher Lamb's load/store alignment changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36309 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 18:36:27 +00:00
Jeff Cohen
8f192e0ee0 Make enum-valued bitfield large enough to avoid interpretation as negative values in VC++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36304 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 16:29:37 +00:00
Jeff Cohen
8c28c467f6 Fix breakage of bytecode reader when built with VC++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36303 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 15:29:13 +00:00
Jeff Cohen
68c773cf19 The expression "SubclassData = (SubclassData & ~1) | (V) ? 1 : 0;" does not do what
was intended!  | has higher precedence than ?.  Caught by Visual Studio.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36302 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 14:32:59 +00:00
Christopher Lamb
2330e4d4c4 add support for alignment attributes on load/store instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36301 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 08:16:25 +00:00
Owen Anderson
95b745a52e Fix some null checks to actually test the part that needs checking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36298 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 07:04:45 +00:00
Evan Cheng
50aadb9693 Add super-register set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36295 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-21 00:54:06 +00:00
Chris Lattner
a5f5a9c8e2 Fix a problem where primitive types lose their name after llvm_shutdown is called.
This also reduces the amount of work done at static construction time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36285 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 22:33:47 +00:00
Lauro Ramos Venancio
b3a0417cad Implement "general dynamic", "initial exec" and "local exec" TLS models for
X86 32 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36283 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 21:38:10 +00:00
Evan Cheng
e3e31c22bf Add sub-registers set accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36282 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 21:28:05 +00:00
Evan Cheng
a92d62c15f Add sub-register sets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36277 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 21:11:22 +00:00
Owen Anderson
df07335b46 Move more passes to using ETForest instead of DominatorTree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36271 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 06:27:13 +00:00
Owen Anderson
13e3a292c5 Add null checks and const-ify these accessors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36270 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 05:44:16 +00:00
Chris Lattner
2e3ab5726d Fix a very strange assertion message, patch by Christopher Lamb
CVS: ----------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36267 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-20 03:27:36 +00:00
Jeff Cohen
3f520a7111 Fix some VC++ warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36259 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-19 02:04:09 +00:00
Owen Anderson
9e7919785e Add accessor to get the blocks immediately dominated by a given block to ETForest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36251 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 05:25:09 +00:00
Evan Cheng
f44c72817e VarInfo::UsedBlocks is no longer used. Remove.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36250 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 05:04:38 +00:00
Owen Anderson
1c2b862be0 Add an accessor to make ETForest more useful.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36246 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 04:38:39 +00:00
Evan Cheng
faf05bbaea Don't populate TryAgainList when coalescing only physical registers with virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36240 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 02:30:19 +00:00
Chris Lattner
2f15254d77 what's an & between friends?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-18 00:43:05 +00:00
Evan Cheng
20b0abc24f Copy coalescing change to prevent a physical register from being pin to a
long live interval that has low usage density.
1. Change order of coalescing to join physical registers with virtual
   registers first before virtual register intervals become too long.
2. Check size and usage density to determine if it's worthwhile to join.
3. If joining is aborted, assign virtual register live interval allocation
   preference field to the physical register.
4. Register allocator should try to allocate to the preferred register
   first (if available) to create identify moves that can be eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36218 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:32:26 +00:00
Evan Cheng
e52eef8e9a Add a register allocation preference field; add a method to compute size of a live interval.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36216 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:25:11 +00:00
Evan Cheng
eff03db46d Change getAllocatableSet() so it returns allocatable registers for a specific register class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36215 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:23:34 +00:00
Evan Cheng
38b7ca6651 Keep track of number of uses within the function per virtual register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 20:22:11 +00:00
Chris Lattner
47e756c11e Commit an patch from Gabor Greif in Mar 2005. This eliminates the tail
pointer from ilist, storing it in the prev pointer of the first node in the
list instead.

This shrinks ilist from 8 to 4 bytes, BasicBlock from 40->36 bytes, Function
from 76->68 bytes, Module from 52->44 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36210 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:41:42 +00:00
Chris Lattner
4cc12c9f57 make getnext/getprev accessors private.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36209 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:30:41 +00:00
Chris Lattner
881765af0a make next/prev accessors private
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36207 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:16:39 +00:00
Chris Lattner
7a83aecc03 bool on darwin/ppc is 4 bytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36206 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:15:04 +00:00
Chris Lattner
97f89e688f Instruction:: Next/Prev accessors are now private
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36204 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 18:03:55 +00:00
Anton Korobeynikov
57fc00d5cf Implemented correct stack probing on mingw/cygwin for dynamic alloca's.
Also, fixed static case in presence of eax livin. This fixes PR331

PS: Why don't we still have push/pop instructions? :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36195 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 09:20:00 +00:00
Jeff Cohen
eb913b6b34 Fix build breakage on 64-bit systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36193 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 05:33:04 +00:00
Chris Lattner
18feb92e91 merge several fields in GlobalValue to use the same word, move CallingConv
field into SubclassData in Value.  This shrinks GlobalVAlue from 48->40
bytes, Function from 88->76, and GlobalVariable from 76->68.  This trims
4640 bytes off my testcase, reading a bc file without materializing any
functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36192 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:31:29 +00:00
Chris Lattner
f8dfef7437 The (negative) offset from a SymbolTableListTraits-using ilist to its container
object is always constant.  As such, evaluate it at compile time instead of storing
it as an ivar in SymbolTableListTraits.  This shrinks every SymbolTableListTraits
ilist by a word, shrinking BasicBlock from 44->40 bytes, Function from 96->88 bytes,
and Module from 60->52 bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36189 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 04:04:14 +00:00
Chris Lattner
17fcdd5e1b Refactor SymbolTableListTraits to only have a single pointer in it, instead
of two.  This shrinkifies Function by 8 bytes (104->96) and Module by 8
bytes (68->60).  On a testcase of mine, this reduces the memory used to
read a module header from 565680b to 561024, a little over 4K.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36188 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 03:26:42 +00:00
Chris Lattner
205c27d4a9 urr, yeah.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36187 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-17 02:04:39 +00:00
Reid Spencer
02b2a4c77a Fix 80 col violations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36168 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 21:24:12 +00:00
Devang Patel
6b1df0e863 Proivde getAnalysis<FPAnalysis>(Func) support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36159 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 20:56:24 +00:00
Devang Patel
569a6fd9d5 Give each pass manager chance to manage lower level analysis pass, which is
pass required by one of pass managed by the manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36153 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 20:12:57 +00:00
Devang Patel
8f93b7fc36 Add getPotentialPassManagerType(). No functionality change, yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36149 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 18:51:25 +00:00
Anton Korobeynikov
bed2946a96 Removed tabs everywhere except autogenerated & external files. Add make
target for tabs checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36146 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 18:10:23 +00:00
Reid Spencer
2db15e2b42 For PR1328:
Don't assert everytime an intrinsic name isn't recognized. Instead, make
the assert optional when callin getIntrinsicID(). This allows the assembler
to handle invalid intrinsic names gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36120 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-16 06:54:34 +00:00
Owen Anderson
e934fefd6b Tabs -> Spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36094 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-15 23:14:18 +00:00
Owen Anderson
3dc6776b33 Remove ImmediateDominator analysis. The same information can be obtained from DomTree. A lot of code for
constructing ImmediateDominator is now folded into DomTree construction.

This is part of the ongoing work for PR217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36063 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-15 08:47:27 +00:00
Owen Anderson
690c684fc6 Make ETForest depend on DomTree rather than IDom. This is the first step
in the long process that will be fixing PR 217.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36034 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 23:49:24 +00:00
Jeff Cohen
ac58a16f85 Fix PR1329.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36016 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 21:50:21 +00:00
Chris Lattner
6f771d4351 add GetElementPtrInst::hasAllZeroIndices, a long-overdue helper method.
Writing it twice in the same day was too much for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35978 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-14 00:12:57 +00:00
Reid Spencer
57ae4f5f01 Implement a getBitsNeeded method to determine how many bits are needed to
represent a string in binary form by an APInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35968 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-13 19:19:07 +00:00
Dan Gohman
a1a702cdd2 Rename Value::getValueType to getValueID, to avoid confusion with
other things named getValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35964 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-13 18:12:09 +00:00
Chris Lattner
7fec90ebf4 CSE simple binary expressions when they are inserted. This makes LSR produce
less huge code that needs to be cleaned up by sdisel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35959 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-13 05:04:18 +00:00