Commit Graph

10381 Commits

Author SHA1 Message Date
Alkis Evlogimenos bbf53937a4 Make dense maps keyed on physical registers smallerusing
MRegisterInfo::getNumRegs() instead of
MRegisterInfo::FirstVirtualRegister.

Also use MRegisterInfo::is{Physical,Virtual}Register where
appropriate.

llvm-svn: 11477
2004-02-15 21:37:17 +00:00
Alkis Evlogimenos 2c5ddd20ba Eliminate the use of spill (reserved) registers.
llvm-svn: 11476
2004-02-15 10:24:21 +00:00
Chris Lattner 8579a6fafc QOI bug fixed
llvm-svn: 11475
2004-02-15 06:00:04 +00:00
Chris Lattner 76b2ff4ded Adjustments to support the new ConstantAggregateZero class
llvm-svn: 11474
2004-02-15 05:55:15 +00:00
Chris Lattner 7bea8084e0 Add support for the new ConstantAggregateZero class
llvm-svn: 11473
2004-02-15 05:54:27 +00:00
Chris Lattner 834b1272f3 Make the JIT zero out globals with memset instead of an element at a time. This
should speed it up a bit on a lot of programs

llvm-svn: 11472
2004-02-15 05:54:06 +00:00
Chris Lattner 218eb798a2 No need to scan zero initializers. This should make DSA a bit faster.
llvm-svn: 11471
2004-02-15 05:53:42 +00:00
Chris Lattner 9fba3da879 Add a new ConstantAggregateZero class, to fix PR239. This makes zero
initializers for constant structs and arrays take constant space, instead of
space proportinal to the number of elements.  This reduces the memory usage of
the LLVM compiler by hundreds of megabytes when compiling some nasty SPEC95
benchmarks.

llvm-svn: 11470
2004-02-15 05:53:04 +00:00
Chris Lattner 2d6fca9717 finegrainify namespacification
llvm-svn: 11469
2004-02-15 05:52:36 +00:00
Chris Lattner e9fbbc25a1 Bug fixed
llvm-svn: 11468
2004-02-15 05:47:37 +00:00
Chris Lattner 015e821279 ConstantArray::get and ConstantStruct::get now just return pointers to
'Constant', instead of specific subclass pointers.  In the future, these will
return an instance of ConstantAggregateZero if all of the inputs are zeros.

llvm-svn: 11467
2004-02-15 04:14:47 +00:00
Chris Lattner 37a716fa80 Remove dependence on return type of ConstantStruct::get
llvm-svn: 11466
2004-02-15 04:07:32 +00:00
Chris Lattner c75bf528c1 Remove dependence on the return type of ConstantArray::get
llvm-svn: 11463
2004-02-15 04:05:58 +00:00
Chris Lattner 5d56c478ba Keep a cache of non-abstract null arrays and structs. This speeds up llvm-dis
from 16.57 -> 13.46s on 129.compress.

llvm-svn: 11462
2004-02-15 02:46:46 +00:00
Chris Lattner 0836c10052 Testcase for PR205: [llvmgcc] C front-end does not emit 'zeroinitializer' when possible
llvm-svn: 11461
2004-02-15 02:19:08 +00:00
Chris Lattner 3e86e1b0f7 Test for actual support, not just for lack of crashage
llvm-svn: 11460
2004-02-15 01:21:39 +00:00
Chris Lattner a9084948ff Implement llvm.(frame|return)address(0) correctly. They are used by the LLVM JIT, among other
applications

llvm-svn: 11459
2004-02-15 01:04:03 +00:00
Alkis Evlogimenos 636e19d4b1 Fix problem in DEBUG code. I could be pointing past the end and
dereferencing it causes an assertion error.

llvm-svn: 11458
2004-02-15 00:46:41 +00:00
Chris Lattner d5eec5ebcf New code quality fix
llvm-svn: 11457
2004-02-15 00:23:15 +00:00
Chris Lattner f070437543 New testcase for PR237: [x86] wierd stack/frame pointer manipulation
llvm-svn: 11456
2004-02-15 00:21:04 +00:00
Chris Lattner 43e82e1152 Fix the 'have a framepointer' case, so that the frame pointer always points
to the old saved EBP.

llvm-svn: 11455
2004-02-15 00:15:37 +00:00
Chris Lattner 1dfa97034d Allow for fixed objects to reside in the local area, and if they don't to not
clobber them by allocating other objects in the same space!

llvm-svn: 11454
2004-02-15 00:14:20 +00:00
Alkis Evlogimenos 6a35516dcc Add back machine code deleter pass until we get a MachineCode pass
that will be responsible for the creation of MachineFunctions and will
be required by all MachineFunctionPass passes.

llvm-svn: 11453
2004-02-15 00:03:15 +00:00
Alkis Evlogimenos fccb75d91e Modularize implementation of LeakDetector into a typed template
implementation class. This makes the code simpler and allows for more
types to be added easily. It also implements caching for generic
objects (it was only available for llvm objects).

llvm-svn: 11452
2004-02-14 23:33:39 +00:00
Chris Lattner 2e4acc0a73 Add support for the 'pop' instruction
llvm-svn: 11451
2004-02-14 21:06:02 +00:00
Chris Lattner f54cd1524d There is no reason to align the stack pointer if there are no callees of this
function!

llvm-svn: 11450
2004-02-14 20:11:07 +00:00
Chris Lattner 612ce0c47c There is no reason to align the stack pointer if there are no callees of this function!
llvm-svn: 11449
2004-02-14 20:10:59 +00:00
Chris Lattner 7dceed5ff9 The prologue/epilogue related method calls have no reason to return a value,
make them return void.

This allows us to avoid some costly MBB.size() calls

llvm-svn: 11448
2004-02-14 19:49:54 +00:00
Chris Lattner 72862f132c The prologue/epilogue related method calls have no reason to return a value,
make them return void.

llvm-svn: 11447
2004-02-14 19:49:05 +00:00
Chris Lattner 34c47d967e fix typeo
llvm-svn: 11446
2004-02-14 19:27:26 +00:00
Chris Lattner 9f75a55329 finegrainify namespacification, fix 80col prob
llvm-svn: 11445
2004-02-14 06:00:36 +00:00
Chris Lattner 0c48a03374 A target that doesn't support these intrinsics will still meet spec (the
intrinsic will always produce zero), but it will behave unexpectedly, so
warn like GCC does.

llvm-svn: 11444
2004-02-14 04:52:06 +00:00
Chris Lattner d6a39eaa70 Urg, right. These need an input value...
llvm-svn: 11443
2004-02-14 04:47:23 +00:00
Chris Lattner 2f49d5bb35 Codegen llvm.memset into rep stos[bwd]. Simplify code for llvm.memcpy
llvm-svn: 11442
2004-02-14 04:46:05 +00:00
Chris Lattner 8bed37595d add 'rep stos[bwd]' instructions
llvm-svn: 11441
2004-02-14 04:45:37 +00:00
Chris Lattner 2c0d1265dc new testcase for llvm.memset generation
llvm-svn: 11440
2004-02-14 04:26:15 +00:00
Chris Lattner 141ebb625d These should be mentioned
llvm-svn: 11439
2004-02-14 04:12:41 +00:00
Chris Lattner 3649c3aaf7 Document new intrinsics
llvm-svn: 11438
2004-02-14 04:08:35 +00:00
Chris Lattner 3646dadc6c builtin_return/frame_address now work
llvm-svn: 11437
2004-02-14 04:08:29 +00:00
Chris Lattner 451f1bca6f Testcase for builtin frame/return address
llvm-svn: 11436
2004-02-14 04:06:48 +00:00
Chris Lattner cd947e4b8b Test that the CFE compiles memset and bzero to llvm.memset
llvm-svn: 11435
2004-02-14 03:46:37 +00:00
Chris Lattner cf81fc70a4 Add a testcase for the frameaddress and returnaddress intrinsics.
llvm-svn: 11434
2004-02-14 02:55:47 +00:00
Chris Lattner f7c1088a36 Add support for the returnaddress and frameaddress intrinsics
llvm-svn: 11433
2004-02-14 02:55:36 +00:00
Chris Lattner 3c4bc03c8a Test that the code generator supports these intrinsics
llvm-svn: 11432
2004-02-14 02:51:40 +00:00
Chris Lattner dc632111bf Add llvm.memset/frameaddress/returnaddress intrinsics.
llvm-svn: 11431
2004-02-14 02:47:17 +00:00
Alkis Evlogimenos 5a92240270 Use newly added next() and prior() utility functions.
llvm-svn: 11430
2004-02-14 01:18:34 +00:00
Alkis Evlogimenos 7c6e4d5ae6 Add next() and prior() iterator utility functions. Unlike std::advance
they do not modify the passed iterator but return a copy.

next(myIt) returns copy of myIt incremented once
next(myIt, n) returns copy of myIt incremented n times
prior(myIt) returns copy of myIt decremented once
prior(myIt, n) returns copy of myIt decremented n times

While at it remove obsolete implementation of mapped_iterator.

llvm-svn: 11429
2004-02-14 01:17:28 +00:00
Chris Lattner a9c61b33c6 Updates for the C backend's movement
llvm-svn: 11428
2004-02-14 01:07:17 +00:00
Alkis Evlogimenos ddcb4ad53e Use std::numeric_limits<float>::infinity() instead of
std::numeric_limits<float>::max() for weighting preallocated
intervals.

llvm-svn: 11427
2004-02-14 00:44:07 +00:00
Chris Lattner 0997f207c2 Use intrinsic lowering like the rest of the backends. Get rid of crufty hacky
code that worked around problems in the mangler

llvm-svn: 11426
2004-02-14 00:31:10 +00:00