Commit Graph

5461 Commits

Author SHA1 Message Date
Chris Lattner db83265e3c 8 buckets is way too small to start out with. This was only for testing.
llvm-svn: 33835
2007-02-03 19:30:48 +00:00
Chris Lattner a025ab9fa8 remove a dead header
llvm-svn: 33820
2007-02-03 03:02:10 +00:00
Bill Wendling f382ea30fd Added GetTargetRelocation method.
llvm-svn: 33815
2007-02-03 02:38:57 +00:00
Bill Wendling 0ceb8bb770 Added some accessor methods.
llvm-svn: 33814
2007-02-03 02:38:15 +00:00
Bill Wendling 761d275c35 Moved MachORelocation to its own header file. Have a call through the
TargetMachOInfo object to the GetTargetRelocation method. Pass into it
non-Mach-O-specific parameters.

llvm-svn: 33813
2007-02-03 02:37:51 +00:00
Bill Wendling 98ea0ea39e New file for the MachORelocation structure. It doesn't have to be tied to the
MachOWriter.h file.

llvm-svn: 33812
2007-02-03 02:36:17 +00:00
Chris Lattner 0a30b1f00f switch the sched unit map over to use a DenseMap instead of std::map. This
speeds up isel as a whole time by 2.6%.

llvm-svn: 33810
2007-02-03 01:34:13 +00:00
Chris Lattner 1bfc7ab6a7 Switch inliner over to use DenseMap instead of std::map for ValueMap. This
speeds up the inliner 16%.

llvm-svn: 33801
2007-02-03 00:08:31 +00:00
Chris Lattner f4af392bd9 silence annoying warning in release-asserts build
llvm-svn: 33797
2007-02-02 21:19:18 +00:00
Chris Lattner 1a49acad38 add find/erase, add const iterators, fix bugs in iterators.
llvm-svn: 33791
2007-02-02 20:34:32 +00:00
Chris Lattner 5b8ecfdb89 add iterators
llvm-svn: 33790
2007-02-02 19:27:13 +00:00
Reid Spencer 2341c22ec7 Changes to support making the shift instructions be true BinaryOperators.
This feature is needed in order to support shifts of more than 255 bits
on large integer types.  This changes the syntax for llvm assembly to
make shl, ashr and lshr instructions look like a binary operator:
   shl i32 %X, 1
instead of
   shl i32 %X, i8 1
Additionally, this should help a few passes perform additional optimizations.

llvm-svn: 33776
2007-02-02 02:16:23 +00:00
Devang Patel 04bb891670 Pretty print pass managers.
llvm-svn: 33767
2007-02-01 22:10:12 +00:00
Jim Laskey c3de9b4b14 Support for non-landing pad exception handling.
llvm-svn: 33755
2007-02-01 16:31:34 +00:00
Reid Spencer e15a8b7a55 Fix a homonymo in a comment.
llvm-svn: 33754
2007-02-01 12:09:51 +00:00
Anton Korobeynikov 1b4e6015b4 Fixed uninitialized stuff inside LegalizeDAG. Fortunately, the only
affected part is codegen of "memove" inside x86 backend. This fixes
PR1144

llvm-svn: 33752
2007-02-01 08:39:52 +00:00
Chris Lattner 8001a63281 Add a new dense hash table implementation
llvm-svn: 33751
2007-02-01 07:49:59 +00:00
Chris Lattner 1003dc72b4 rename DenseMap to IndexedMap.
llvm-svn: 33749
2007-02-01 05:32:05 +00:00
Chris Lattner dcdfa788b1 rename DenseMap -> IndexedMap.
llvm-svn: 33748
2007-02-01 05:28:10 +00:00
Devang Patel df4e992af8 Add printVersion(). Linker can use it to print LLVM version number.
llvm-svn: 33738
2007-02-01 01:46:06 +00:00
Devang Patel 9eb2caaeb6 Add PrintVersionMessage() that tools can use to print version number
without exiting program.

llvm-svn: 33737
2007-02-01 01:43:37 +00:00
Chris Lattner 245ed94b76 add missing ctor
llvm-svn: 33714
2007-01-31 20:08:34 +00:00
Chris Lattner 79807c3dfe implement the new GEP instruction ctors.
llvm-svn: 33708
2007-01-31 19:47:18 +00:00
Evan Cheng 53026f1d5a Allow the target to override the ISD::CondCode that's to be used to test the
result of the comparison libcall against zero.

llvm-svn: 33701
2007-01-31 09:29:11 +00:00
Evan Cheng 98aa8cbf4e Added O_F32 and O_64 in addition to UO_F32 and UO_64 even though by
default they call the same libgcc routine. The result of the calls are
"tested" differently.

llvm-svn: 33700
2007-01-31 09:26:31 +00:00
Chris Lattner 64488b1cc3 Revise APIs for creating constantexpr GEPs to not require the use of
vectors.  This allows us to eliminate many temporary vectors, and their
associated malloc/free pairs.

llvm-svn: 33691
2007-01-31 04:39:29 +00:00
Chris Lattner 86e359e5cb Make this a *real* header:
1. Remove using namespace llvm;
  2. Remove unneeded #includes.
  3. Add #include guard.

Also add prototypes for new code moved from transformutils to libanalysis.

llvm-svn: 33682
2007-01-30 23:47:35 +00:00
Chris Lattner ec84c162d8 move constant folding code out of Utils/Local into libanalysis
llvm-svn: 33681
2007-01-30 23:46:43 +00:00
Chris Lattner ad84a730ba The inliner/cloner can now optionally take TargetData info, which can be
used by constant folding.

llvm-svn: 33676
2007-01-30 23:22:39 +00:00
Chris Lattner 1e6cf2ee3c Change constant folding APIs to take an optional TargetData, and change
ConstantFoldInstOperands/ConstantFoldCall to take a pointer to an array
of operands + size, instead of an std::vector.

llvm-svn: 33669
2007-01-30 23:12:47 +00:00
Reid Spencer 5301e7c605 For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.

llvm-svn: 33663
2007-01-30 20:08:39 +00:00
Reid Spencer 3a0bbb0a4d Compaction tables no longer supported, remove its block ID.
llvm-svn: 33662
2007-01-30 19:37:26 +00:00
Jim Laskey ee23de6c36 Out of line function.
llvm-svn: 33641
2007-01-29 23:40:33 +00:00
Jim Laskey 3f9f250928 Only gather frame info if debug or eh.
llvm-svn: 33639
2007-01-29 23:20:22 +00:00
Devang Patel 1c3633e461 - Undo previous check-in (i.e. Do not export TimingInfo class through
PassManagers.h).

- Add StopPassTimer() and StartPassTimer() to expose TimingInfo to
CallGraphPassManager

- Use these two APIs in CalLgraphPassManager to measure timings.

llvm-svn: 33638
2007-01-29 23:10:37 +00:00
Nate Begeman eda5997cc8 Finish off bug 680, allowing targets to custom lower frame and return
address nodes.

llvm-svn: 33636
2007-01-29 22:58:52 +00:00
Nate Begeman 2a562ba47b Properly support cstrings
llvm-svn: 33629
2007-01-29 21:20:42 +00:00
Jim Laskey d1154860a4 Flag to control exception handling.
llvm-svn: 33628
2007-01-29 20:48:32 +00:00
Devang Patel 55bcb50840 Move TimingInfo into PassManagers.h so that other libs can use it.
llvm-svn: 33626
2007-01-29 20:06:26 +00:00
Jim Laskey b4a2f05d1c Landing pad-less eh for PPC.
llvm-svn: 33622
2007-01-29 18:51:14 +00:00
Reid Spencer 34dbbca483 IntrinsicLowering now requires TargetData.
llvm-svn: 33617
2007-01-29 17:39:50 +00:00
Anton Korobeynikov 6843149863 Make doxygen happy
llvm-svn: 33609
2007-01-29 00:09:00 +00:00
Reid Spencer 326bf785a2 Adjust a comment to reflect reality.
llvm-svn: 33607
2007-01-28 22:26:42 +00:00
Anton Korobeynikov 037c867b54 Propagate changes from my local tree. This patch includes:
1. New parameter attribute called 'inreg'. It has meaning "place this
parameter in registers, if possible". This is some generalization of
gcc's regparm(n) attribute. It's currently used only in X86-32 backend.
2. Completely rewritten CC handling/lowering code inside X86 backend.
Merged stdcall + c CCs and fastcall + fast CC.
3. Dropped CSRET CC. We cannot add struct return variant for each
target-specific CC (e.g. stdcall + csretcc and so on).
4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in
on first attribute has meaning 'This is hidden pointer to structure
return. Handle it gently'.
5. Fixed small bug in llvm-extract + add new feature to
FunctionExtraction pass, which relinks all internal-linkaged callees
from deleted function to external linkage. This will allow further
linking everything together.

NOTEs: 1. Documentation will be updated soon.
       2. llvm-upgrade should be improved to translate csret => sret.
          Before this, there will be some unexpected test fails.
llvm-svn: 33597
2007-01-28 13:31:35 +00:00
Chris Lattner c56fd7fe0f provide a definition for uintptr_t
llvm-svn: 33592
2007-01-27 23:52:33 +00:00
Chris Lattner 107cba6102 Make SmallSet<whatever*, N> faster by transparently implementing it with
SmallPtrSet.  Some clients will need to use SmallPtrSet directly though if
they need to iterate over the set.

llvm-svn: 33584
2007-01-27 08:20:15 +00:00
Chris Lattner c4f9d11c32 add some missing API
llvm-svn: 33583
2007-01-27 08:19:03 +00:00
Chris Lattner 084a169d49 Give SmallSet a reasonable fallback if it gets large: use an std::set.
llvm-svn: 33582
2007-01-27 08:14:53 +00:00
Chris Lattner 39ab70cf80 implement SmallPtrSet::erase
llvm-svn: 33581
2007-01-27 07:59:10 +00:00
Chris Lattner 030a2dcc1e Fix a limitation of SmallPtrSet. Before it would assert if the smallsize
was not a power of two.  Now it rounds up to the next power of two internally.

llvm-svn: 33580
2007-01-27 07:52:27 +00:00
Chris Lattner 498f00a26a add some comments on the algorithm
llvm-svn: 33579
2007-01-27 07:24:51 +00:00
Chris Lattner 74102df857 Add a new SmallSet ADT specialized for pointers.
llvm-svn: 33577
2007-01-27 07:10:46 +00:00
Reid Spencer 679004e719 Add some comments, fix an 80 cols violation.
llvm-svn: 33576
2007-01-27 04:42:50 +00:00
Bill Wendling a9167da9bb Accessor for the TargetELFWriterInfo class object.
llvm-svn: 33572
2007-01-27 02:55:04 +00:00
Bill Wendling 2ee13a0881 The TargetELFWriterInfo class holds target-specific information for the ELF writer.
llvm-svn: 33570
2007-01-27 02:53:50 +00:00
Chris Lattner 672a31c835 simplify insert interface
llvm-svn: 33567
2007-01-27 02:13:58 +00:00
Chris Lattner 33aba834e5 clean up comment
llvm-svn: 33566
2007-01-27 01:14:20 +00:00
Nate Begeman f209495e93 Handle multiple functions, properly mangle symbols, and fix support for
scattered relocations.

llvm-svn: 33555
2007-01-26 22:39:48 +00:00
Chris Lattner 1ac3256c22 fit in 80 cols
llvm-svn: 33553
2007-01-26 21:48:40 +00:00
Jim Laskey 5a1df9748b rename files
llvm-svn: 33552
2007-01-26 21:38:26 +00:00
Jim Laskey c56315c2b5 Change the MachineDebugInfo to MachineModuleInfo to better reflect usage
for debugging and exception handling.

llvm-svn: 33550
2007-01-26 21:22:28 +00:00
Jim Laskey f9e5445ed4 Make LABEL a builtin opcode.
llvm-svn: 33537
2007-01-26 14:34:52 +00:00
Reid Spencer 6a8d4eab6a For PR761:
BCReader no longer has a header that contains the endinanness and
pointer size. It's been replaced by datalayout field.

llvm-svn: 33528
2007-01-26 08:09:01 +00:00
Reid Spencer 1743debcf2 For PR761:
Remove the setEndiannes and setPointerSize methods. These are now set
through the setDataLayout method.

llvm-svn: 33526
2007-01-26 08:07:01 +00:00
Reid Spencer c4fbcb370b For PR645:
Remove the Function::renameLocalSymbols function as it is no longer
needed.

llvm-svn: 33522
2007-01-26 08:01:30 +00:00
Devang Patel 6a47b3c655 Remove dead code.
CallGraphSCCPass does not need to implement runOnModule().
It supports runOnSCC().

llvm-svn: 33516
2007-01-26 01:08:18 +00:00
Devang Patel 13058a5ae9 Inherit CallGraphSCCPass directly from Pass.
llvm-svn: 33514
2007-01-26 00:47:38 +00:00
Devang Patel 08731903d0 Inherit FunctionPass directly from Pass.
llvm-svn: 33513
2007-01-26 00:23:00 +00:00
Devang Patel 5292e65791 Inherit BasicBlockPass directly from Pass.
llvm-svn: 33511
2007-01-25 23:23:25 +00:00
Devang Patel 98095bf795 Remove dead code.
llvm-svn: 33506
2007-01-25 22:27:00 +00:00
Evan Cheng ae4ea45eaf Added a MRegisterInfo hook that tells PEI the target is responsible for
rounding the stack frame to a multiple of stack alignment.

llvm-svn: 33504
2007-01-25 22:12:41 +00:00
Jim Laskey 1c055e8d14 Migrate print routines to asm to be shared by exception handling.
llvm-svn: 33498
2007-01-25 15:12:02 +00:00
Jim Laskey f6c63fec92 Repair debug frames as a prelude to eh_frames. Switched to using MachineMoves
by value so that clean up is less confusing (these vectors tend to be small.)

llvm-svn: 33488
2007-01-24 18:45:13 +00:00
Jim Laskey f6487ec894 Use asm printer to emit alignment
llvm-svn: 33485
2007-01-24 13:12:32 +00:00
Bill Wendling 06a03210af Make ivars private and use getters. Have the MachOWriter return "Mach-O
Writer" for the pass name.

llvm-svn: 33483
2007-01-24 07:13:56 +00:00
Evan Cheng f5c96fabf9 Renamed getTypeAlignmentShift() to getPreferredTypeAlignmentShift().
llvm-svn: 33482
2007-01-24 07:03:39 +00:00
Bill Wendling 0dea65b477 A virtual method to return the TargetMachOWriterInfo object. This returns
a real value in derived classes, of course.

llvm-svn: 33477
2007-01-24 03:38:14 +00:00
Bill Wendling 87d008c63b Moved target-specific information to the TargetMachOWriterInfo obj.
llvm-svn: 33476
2007-01-24 03:37:18 +00:00
Bill Wendling a1b7b8a485 New "TargetMachOWriterInfo" class. It holds target-specific information
that the MachOWriter needs in order to do its writing stuff 'n things.

llvm-svn: 33475
2007-01-24 03:36:05 +00:00
Devang Patel 1f8200b404 Add CallGraphSCCPass::assignPassManager().
This enables CalLGraphPassManager.

llvm-svn: 33466
2007-01-23 21:52:35 +00:00
Anton Korobeynikov a41d9eca96 Moved disassembler to libSystem
llvm-svn: 33461
2007-01-23 10:26:08 +00:00
Chris Lattner c4d201ea9a fix typo
llvm-svn: 33459
2007-01-23 04:59:58 +00:00
Chris Lattner d9522bc2d0 make the SmallSet interface more std::set-like
llvm-svn: 33458
2007-01-23 01:16:19 +00:00
Chris Lattner d51b3ca3ad add a trivial SmallSet class, which operates on a similar principle to
SmallVector.

llvm-svn: 33456
2007-01-23 00:59:15 +00:00
Evan Cheng 16e58be1bc hasFP() is now a virtual method of MRegisterInfo.
llvm-svn: 33455
2007-01-23 00:57:47 +00:00
Evan Cheng 6ba3c9d08a Update comment.
llvm-svn: 33450
2007-01-22 23:14:52 +00:00
Chris Lattner 19bb6b996b default to emiting an uncompressed .bc file
llvm-svn: 33420
2007-01-21 06:34:18 +00:00
Reid Spencer 2eadb5310d For PR970:
Clean up handling of isFloatingPoint() and dealing with PackedType.
Patch by Gordon Henriksen!

llvm-svn: 33415
2007-01-21 00:29:26 +00:00
Reid Spencer 2239163496 Implement a getTypeSizeInBits method. This helps in transforms that want
to ensure the bit size of a type is identical before proceeding.

llvm-svn: 33413
2007-01-20 23:32:04 +00:00
Owen Anderson e52a235e99 TargetData assumes (and some regression tests depend on it) that the size of
an unspecified datatype in the datalayout is capped by the size of a pointer.

llvm-svn: 33411
2007-01-20 23:07:13 +00:00
Chris Lattner 50ee0e40e5 Teach TargetData to handle 'preferred' alignment for each target, and use
these alignment amounts to align scalars when we can.  Patch by Scott Michel!

llvm-svn: 33409
2007-01-20 22:35:55 +00:00
Reid Spencer a94d394ad2 For PR1043:
This is the final patch for this PR. It implements some minor cleanup
in the use of IntegerType, to wit:
1. Type::getIntegerTypeMask -> IntegerType::getBitMask
2. Type::Int*Ty changed to IntegerType* from Type*
3. ConstantInt::getType() returns IntegerType* now, not Type*

This also fixes PR1120.

Patch by Sheng Zhou.

llvm-svn: 33370
2007-01-19 21:13:56 +00:00
Anton Korobeynikov 3e956974b3 Adding disassembler interface and external hook to udis86 library.
llvm-svn: 33358
2007-01-19 17:25:17 +00:00
Reid Spencer 2867a1d466 Provide an isPowerOf2ByteWidth method for the IntegerType class. This will
mostly be used by back ends that wish to distinguish between integer types
that fit evenly within a natural integer type and those that don't.

llvm-svn: 33328
2007-01-18 02:59:54 +00:00
Bill Wendling e750f61ac5 Have the OutputBuffer take the is64Bit and isLittleEndian booleans.
llvm-svn: 33316
2007-01-18 01:23:11 +00:00
Chris Lattner 0ee2d46cfe add new JumpTableSpecialLabelPrefix hook to asmprinter for jumptable emission.
llvm-svn: 33314
2007-01-18 01:12:56 +00:00
Reid Spencer 7300651384 For PR1028:
Add the llvm.stacksave and llvm.stackrestore intrinsics that correspond
to the GCC builtins __builtin_stack_save and __builtin_stack_restore. This
allows the CBE to execute these builtins, and fixes:

   test/CodeGen/CBackend/2007-01-17-StackSaveNRestore.ll
   External/SPEC/CINT2000/176.gcc (CBE)

Patch by Gordon Henriksen.

llvm-svn: 33313
2007-01-17 23:33:20 +00:00
Bill Wendling cd9c1f035a Changed to use the OutputBuffer instead of the methods in MachO and ELF
writers.

llvm-svn: 33311
2007-01-17 22:22:31 +00:00
Bill Wendling cbb5501c5d Refactored output buffer methods from MachO and ELF writers.
llvm-svn: 33310
2007-01-17 22:17:24 +00:00
Devang Patel dffca63396 Update assignPassManager() signature to allow selection of preferred
pass manager type. This allows new FPPassManager to select Call Graph
Pass Manager (if available) as its parent.

llvm-svn: 33306
2007-01-17 20:30:17 +00:00
Chris Lattner 2e38168e4a document that BSSSection can be null.
Add new ZeroFillDirective directive.

llvm-svn: 33301
2007-01-17 17:42:30 +00:00
Anton Korobeynikov 716efbfc63 Document flag
llvm-svn: 33300
2007-01-17 10:40:54 +00:00
Anton Korobeynikov 3f6d52834b * Fix one more bug in PIC codegen: extra load is needed for *all*
non-statics.
* Introduce new option to output zero-initialized data to .bss section.
This can reduce size of binaries. Enable it by default for ELF &
Cygwin/Mingw targets. Probably, Darwin should be also added.

llvm-svn: 33299
2007-01-17 10:33:08 +00:00
Bill Wendling 38ee6519b7 Revert patch.
llvm-svn: 33298
2007-01-17 09:06:13 +00:00
Chris Lattner 856228f42e make doxygen comment much better. Patch by B. Scott Michel!
llvm-svn: 33294
2007-01-17 07:28:48 +00:00
Bill Wendling d04c52203f The TargetObjInfo object goes here.
llvm-svn: 33288
2007-01-17 03:48:29 +00:00
Bill Wendling 7865c4d295 Removed methods which are now in the respective TargetObjInfo implementations.
llvm-svn: 33287
2007-01-17 03:47:54 +00:00
Bill Wendling f758157385 New "TargetObjInfo" class. This holds information that the object writers will
use to write things to the file. It's abstract so each target should implement
its own version for each writer type.

llvm-svn: 33286
2007-01-17 03:46:30 +00:00
Reid Spencer 00e5e0ea8f For PR1117:
Expose the previously hidden checkCast function as CastInst::castIsValid.

llvm-svn: 33282
2007-01-17 02:46:11 +00:00
Reid Spencer 2854cb9ab8 For PR1094:
Make the SetVector::iterator be the vector's const_iterator.

llvm-svn: 33279
2007-01-17 02:22:18 +00:00
Reid Spencer 8da11cde85 Remove unused forward class declarations.
llvm-svn: 33276
2007-01-17 01:49:59 +00:00
Devang Patel 3312f75071 Undo last check-in.
Remove setupPassManager() and its use.

llvm-svn: 33270
2007-01-16 21:43:18 +00:00
Devang Patel 68dc3d2263 Setup pass manager before scheduling required analysis.
llvm-svn: 33262
2007-01-16 19:46:09 +00:00
Bill Wendling e21237e59a Fix for PR1095:
LLVM would miscompile ASM dialects when compiling for PPC. Added dialects for
the X86 and PPC backends. It defaults to "0", the first variant of a compound
inline asm expression.

llvm-svn: 33246
2007-01-16 03:42:04 +00:00
Devang Patel 4268fc08d3 Code refactoring.
llvm-svn: 33245
2007-01-16 02:00:38 +00:00
Devang Patel 6975b6ec09 Remove extra white spaces. Fix comments.
llvm-svn: 33244
2007-01-15 23:06:56 +00:00
Chris Lattner 03c4953cdd rename Type::isIntegral to Type::isInteger, eliminating the old Type::isInteger.
rename Type::getIntegralTypeMask to Type::getIntegerTypeMask.

This makes naming much more consistent.  For example, there are now no longer any
instances of IntegerType that are not considered isInteger! :)

llvm-svn: 33225
2007-01-15 02:27:26 +00:00
Chris Lattner 4442e4b401 Update code to eliminate calls to isInteger, calling isIntegral instead.
llvm-svn: 33220
2007-01-15 01:58:56 +00:00
Reid Spencer 0bfae31cf9 Primitive types don't include integers any more, adjust.
llvm-svn: 33209
2007-01-14 21:46:42 +00:00
Chris Lattner 1ca997078c add accessors
llvm-svn: 33207
2007-01-14 19:41:24 +00:00
Chris Lattner 9f6badbc41 add a new HiddenDirective member for handling visibility.
llvm-svn: 33197
2007-01-14 06:27:21 +00:00
Jim Laskey 3dd792294f virtual not needed.
llvm-svn: 33161
2007-01-12 23:39:50 +00:00
Reid Spencer 6434db7897 Don't #include DerivedTypes.h in this header. Make adjustments to
compensate. Move a function out of line to TargetLowering.cpp

llvm-svn: 33153
2007-01-12 23:21:42 +00:00
Evan Cheng 12c063c405 - Move RTLIB::Libcall enum to a separate file.
- Code clean up.

llvm-svn: 33148
2007-01-12 22:49:32 +00:00
Jim Laskey f047882b15 Allow isAllOnesValue testing on packed constants
llvm-svn: 33146
2007-01-12 22:39:14 +00:00
Evan Cheng 01503121c1 Silence a bogus compiler warning.
llvm-svn: 33145
2007-01-12 22:30:07 +00:00
Chris Lattner 7c41c19c02 inline isIntegral to make this method look like classof for all other
derived types

llvm-svn: 33144
2007-01-12 22:11:53 +00:00
Devang Patel f85793d171 s/addPassToManager/add/g
llvm-svn: 33138
2007-01-12 20:07:16 +00:00
Anton Korobeynikov a0554d90e8 * PIC codegen for X86/Linux has been implemented
* PIC-aware internal structures in X86 Codegen have been refactored
* Visibility (default/weak) has been added
* Docs fixes (external weak linkage, visibility, formatting)

llvm-svn: 33136
2007-01-12 19:20:47 +00:00
Devang Patel e759955c66 Move PMTopLevelManager, PMDataManager and FPPassManger classes into
new PassManagers.h header.

This opens door for implementing CGPassManager in IPA library.

llvm-svn: 33135
2007-01-12 18:52:44 +00:00
Reid Spencer 7a9c62baa6 For PR1064:
Implement the arbitrary bit-width integer feature. The feature allows
integers of any bitwidth (up to 64) to be defined instead of just 1, 8,
16, 32, and 64 bit integers.

This change does several things:
1. Introduces a new Derived Type, IntegerType, to represent the number of
   bits in an integer. The Type classes SubclassData field is used to
   store the number of bits. This allows 2^23 bits in an integer type.
2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and
   64-bit integers. These are replaced with just IntegerType which is not
   a primitive any more.
3. Adjust the rest of LLVM to account for this change.

Note that while this incremental change lays the foundation for arbitrary
bit-width integers, LLVM has not yet been converted to actually deal with
them in any significant way. Most optimization passes, for example, will
still only deal with the byte-width integer types.  Future increments
will rectify this situation.

llvm-svn: 33113
2007-01-12 07:05:14 +00:00
Reid Spencer cddc9dfe97 Implement review feedback for the ConstantBool->ConstantInt merge. Chris
recommended that getBoolValue be replaced with getZExtValue and that
get(bool) be replaced by get(const Type*, uint64_t). This implements
those changes.

llvm-svn: 33110
2007-01-12 04:24:46 +00:00
Evan Cheng 31cbddf28a Store default libgcc routine names and allow them to be redefined by target.
llvm-svn: 33105
2007-01-12 02:11:51 +00:00
Reid Spencer 542964f55b Rename BoolTy as Int1Ty. Patch by Sheng Zhou.
llvm-svn: 33076
2007-01-11 18:21:29 +00:00
Zhou Sheng eb29b0bb6e Fixed a bug in ConstantInt::Inverted().
Modified comment of that method.

llvm-svn: 33074
2007-01-11 14:31:10 +00:00
Zhou Sheng 75b871fb1e For PR1043:
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.

llvm-svn: 33073
2007-01-11 12:24:14 +00:00
Devang Patel 3b3f89900e Add PassManagerType enum.
llvm-svn: 33065
2007-01-11 01:10:25 +00:00
Devang Patel 15701b5c0d Robustify assingPassManager() for Module, Function and Basic Block
Passes.

Robustify PMStack.push()

Add dump() routine to print PMStack.

llvm-svn: 33062
2007-01-11 00:19:00 +00:00
Devang Patel 1c56a638a4 Add PMStack, a Pass Manager stack.
Eventually, Top level pass managers  will use this to keep track of
active pass managers. Eass pass will also learn how to find appropriate
manager from these managers stack.

llvm-svn: 33018
2007-01-08 19:29:38 +00:00
Chris Lattner 9416cba610 remove an old instrumentation pass that is not used anymore.
llvm-svn: 32997
2007-01-07 18:12:13 +00:00
Chris Lattner 2a116abf3a llvm 2.0 doesn't support llvm.isunordered.*
llvm-svn: 32994
2007-01-07 08:52:43 +00:00
Chris Lattner 505c06b739 Change the interface to Module::getOrInsertFunction to be easier to use,
to resolve PR1088, and to help PR411.

llvm-svn: 32988
2007-01-07 08:09:25 +00:00
Chris Lattner 7fab842b1f Add C wrappers for the LTO library (PR1081). Patch by Chandler Carruth!
llvm-svn: 32966
2007-01-06 23:53:43 +00:00
Reid Spencer 32af9e8cc5 For PR411:
Take an incremental step towards type plane elimination. This change
separates types from values in the symbol tables by finally making use
of the TypeSymbolTable class. This yields more natural interfaces for
dealing with types and unclutters the SymbolTable class.

llvm-svn: 32956
2007-01-06 07:24:44 +00:00
Evan Cheng 549163707c - Remove isSetCCExpensive() etc. These are no longer used.
- Add isSelectExpensive() etc. It's used to tell codegen that select is expensive for a given target, avoid using it if possible. Currently it's only
used to expand FCOPYSIGN.

llvm-svn: 32939
2007-01-05 23:31:08 +00:00
Devang Patel b66334b73b 1) Remove old AnalysisResolver.
2) Rename AnalysisResolver_New as AnalysisResolver

llvm-svn: 32938
2007-01-05 22:47:07 +00:00
Devang Patel c6b5a554a4 Remove old pass manager.
llvm-svn: 32927
2007-01-05 20:16:23 +00:00
Reid Spencer 136a91c4e7 Change the syntax for parameter attributes:
1. The @ sign is no longer necessary.
2. We now support "function attributes" as parameter attribute 0.
3. Instead of locating the return type attributes after the type of a
   function result, they are now located after the function header's
   closing paranthesis and before any alignment or section options.
4. The way has been prepared for a new "noreturn" function attribute but
   there is no support for recognizing it in the lexer nor doing anything
   with it if it does get set.
5. The FunctionType::getParamAttrsText method now has support for
   returning multiple attributes. This required a change in its interface.

I'm unhappy that this change leads to 6 new shift/reduce conflicts, but
in each case bison's decision to choose the shift is correct so there
shouldn't be any damage from these conflicts.

llvm-svn: 32904
2007-01-05 17:06:19 +00:00
Chris Lattner 11c822d053 remove the 'protected' workaround now that we don't care about gcc 2.95 anymore.
Reid already did this for FunctionType, this just cleans the rest up.

llvm-svn: 32877
2007-01-04 17:50:42 +00:00
Chris Lattner f96f4492e0 Now that setcondinst has been eliminated, we can mark Value::SubclassID
const and remove the ugly mutator methods.

llvm-svn: 32860
2007-01-04 02:15:37 +00:00
Chris Lattner ecab54cfc0 Add a new ConstantPacked::getAllOnesValue method
llvm-svn: 32856
2007-01-04 01:49:26 +00:00
Devang Patel 2f0b276731 Enable new pass manager, which was accidentally disabled.
llvm-svn: 32855
2007-01-04 01:27:03 +00:00
Bill Wendling 4ec17c3951 The previous implementation of LLVM Streams wasn't removing symbols. This
one should.

llvm-svn: 32845
2007-01-03 22:37:27 +00:00
Evan Cheng 07140c22c7 Fix naming inconsistency: calleesave -> calleesaved.
llvm-svn: 32821
2007-01-02 21:30:17 +00:00
Evan Cheng f43d679951 Add virtual method spillCalleeSaveRegisters() and restoreCalleeSaveRegisters()
to MRegisterInfo. These allow the target to issue instructions to spill and
restore callee saved registers in case where individual stores / loads aren't
the correct / profitable choice.

llvm-svn: 32820
2007-01-02 20:55:17 +00:00
Reid Spencer 45fe75d755 Add some convenience functions for getting the source and destination
types from any Cast instruction.

llvm-svn: 32807
2007-01-02 02:08:27 +00:00
Reid Spencer 62f3c0d57b Convert the intrinsic function definitions to use llvm_i32_ty instead of
llvm_uint_ty or llvm_int_ty. Similarly for i8, i16 and i64

llvm-svn: 32802
2006-12-31 22:24:55 +00:00
Reid Spencer 61543eab05 For PR950:
Change integer type names for signless integer types

llvm-svn: 32777
2006-12-31 05:23:18 +00:00
Reid Spencer 67c4d9633d For PR950:
Add a new feature to FunctionType, Parameter Attributes. This allows tags
such as "sext" and "zext" to be associated with a faunction's arguments
or return type. This allows signedness information to be carried forward
from the frontend to the backend for arguments and result types.

llvm-svn: 32776
2006-12-31 05:22:12 +00:00
Reid Spencer d30fd1d723 For PR950:
Make integer types signless:
  Rename [US]Byte->Int8, [U]Short->Int16, [U]Int->Int32, [U]Long->Int64
  Remove methods pertaining to sign of integer types.

llvm-svn: 32775
2006-12-31 05:20:51 +00:00
Reid Spencer c48b0c714d Make a variable private now that the conditions requiring it to be
protected have been removed.

llvm-svn: 32766
2006-12-29 04:12:03 +00:00
Reid Spencer 4b880acf07 Doxygenify a comment.
llvm-svn: 32765
2006-12-29 04:10:59 +00:00
Reid Spencer 9aad39af4f Add some documentation to make Nick happy.
llvm-svn: 32754
2006-12-23 19:06:54 +00:00
Reid Spencer 266e42b312 For PR950:
This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.

llvm-svn: 32751
2006-12-23 06:05:41 +00:00
Devang Patel cdd9807cba Enable new pass manager. 2nd attempt.
llvm-svn: 32749
2006-12-22 22:55:30 +00:00
Devang Patel f5a994e5cc ModulePass and ImmutablePass. Force out of line virtual method.
llvm-svn: 32748
2006-12-22 22:49:00 +00:00
Jim Laskey c4c39aeb1d Grandchildren are covered by protect.
llvm-svn: 32736
2006-12-21 21:24:35 +00:00
Jim Laskey 28663c73ef Changes from Nick Lewycky with a simplified PPCTargetAsmInfo.
llvm-svn: 32735
2006-12-21 20:26:09 +00:00
Devang Patel e86567e1e1 Enable old pass manager. New pass manager causes CBE failures in llvm-test.
llvm-svn: 32719
2006-12-20 19:57:07 +00:00
Chris Lattner 00bb216977 eliminate constructor from Statistic class. It is now impossible to get a
static constructor for them :).   Transition complete.

llvm-svn: 32710
2006-12-19 23:17:40 +00:00
John Criswell a20006cd96 Added operator methods to the Statistic class; some LLVM projects depend
on these.

llvm-svn: 32701
2006-12-19 22:55:57 +00:00
Devang Patel 91fc1e5780 Enable new pass manager.
llvm-svn: 32689
2006-12-19 21:32:24 +00:00
Chris Lattner 13bfd32f5d Refactor statistic a big and introduce a horrible-but-necessary macro
(STATISTIC), which allows us to define statistics that don't introduce
static ctors into the .o files.  I'm migrating code over to use this
incrementally.

llvm-svn: 32687
2006-12-19 21:27:47 +00:00
Devang Patel 67d6a5e411 s/BasicBlockPassManager/BBPassManager/g
s/ModulePassManager/MPPassManager/g
s/FunctionPassManagerImpl_New/FunctionPassManagerImpl/g
s/PassManagerImpl_New/PassManagerImpl/g

Introduce FPPassManager to manage function passes and
BBPassManagers.

Now FunctionPassManagerImpl is an implementation class
used by externally visible FunctionPassManager to manage
FPPassManagers.

Module pass manager (MPPassManager) now manages FPPassManagers
and ModulePasses.

llvm-svn: 32679
2006-12-19 19:46:59 +00:00
Reid Spencer b799e77547 Correct the description of ConstantInt::isValueValidForType.
llvm-svn: 32664
2006-12-19 01:34:39 +00:00
Reid Spencer e733472221 Make ConstantInt not care about sign any more. To ensure the AsmParser can
still check the validity of signed values an overload to isValueValidForType
was added to allow passing in an int64_t to check.

llvm-svn: 32663
2006-12-19 01:28:19 +00:00
Chris Lattner c1b828c78d Doxgenate comments.
Add GreatestCommonDivisor64

llvm-svn: 32661
2006-12-19 01:11:32 +00:00
Bill Wendling 21be92d260 Removed llvm_ostream and used std::ostream instead.
llvm-svn: 32658
2006-12-18 21:59:00 +00:00
Reid Spencer e45ac2ab11 Remove the createInferredCast methods now that their last uses have been
removed. All casting is now explicit and not inferred by VMCore.

llvm-svn: 32655
2006-12-18 08:52:59 +00:00
Reid Spencer 4800c38a75 Remove the two-argument (inferred cast) form of ConstantExpr::getCast now
that its last uses have been removed.

llvm-svn: 32653
2006-12-18 08:18:46 +00:00
Reid Spencer a4044f35f4 Determine if the -enable-pic option was given.
llvm-svn: 32649
2006-12-18 04:11:16 +00:00
Rafael Espindola d7998d0e6d move ExtWeakSymbols to AsmPrinter
llvm-svn: 32648
2006-12-18 03:37:18 +00:00
Bill Wendling 1e48353346 Accidental submission.
llvm-svn: 32639
2006-12-17 11:13:13 +00:00
Reid Spencer cb80954483 Fix problems in the CBE and InstructionCombining which use the isMaxValue
and isMinValue methods of ConstantInt. These have been broken since the
isSigned parameter was added. It is necessary to use the signed version
of the type in the call to isValueValidForType or else incorrect results
are returned.

llvm-svn: 32637
2006-12-17 06:07:30 +00:00
Bill Wendling a77f14265b Added an automatic cast to "std::ostream*" etc. from OStream. We then can
rework the hacks that had us passing OStream in. We pass in std::ostream*
instead, check for null, and then dispatch to the correct print() method.

llvm-svn: 32636
2006-12-17 05:15:13 +00:00
Chris Lattner 360a14be02 Apply B. Scott Michel's patch for PR1054, thanks!
llvm-svn: 32630
2006-12-16 20:23:42 +00:00
Evan Cheng 5c65ea0db1 Typo.
llvm-svn: 32628
2006-12-16 06:21:55 +00:00
Jeff Cohen 29192e6274 The best unbreakage yet, addressing Bill's concerns.
llvm-svn: 32622
2006-12-16 02:15:42 +00:00
Jeff Cohen b82309f1ab An even better unbreakage...
llvm-svn: 32617
2006-12-15 22:57:14 +00:00
Jeff Cohen 75e93bc8c7 Complete unbreak of VC++ (Chris identified the simple fix).
llvm-svn: 32615
2006-12-15 22:06:08 +00:00
Evan Cheng 16057e7454 Silly assertion. Forgot variable_ops instructions can have arbitrary number of
operands.

llvm-svn: 32592
2006-12-15 06:37:08 +00:00
Jim Laskey 90c8e997a7 File missing from last check in.
llvm-svn: 32586
2006-12-14 21:03:17 +00:00
Jim Laskey 70323a8146 1. Tidy up jump table info.
2. Allow the jit to handle PIC relocable jump tables.

llvm-svn: 32581
2006-12-14 19:17:33 +00:00
Chris Lattner f0f611a76a fit in 80 cols
llvm-svn: 32563
2006-12-13 21:56:10 +00:00
Devang Patel 03fb587348 Using PDL as a prefix for PassDebugLevel enums is not a good idea.
Fix it.

llvm-svn: 32562
2006-12-13 21:13:31 +00:00
Evan Cheng b0b8ae17c2 Add getTypeToExpandTo() which recursively walks TransformToType to determine
the intrinsic type to expand to.

llvm-svn: 32558
2006-12-13 20:52:00 +00:00
Devang Patel f1567a511f Move enum PassDebugLevel from PassManagerT.h to Pass.h.
Use PDL as the prefix for these enums.
Define and use PassDebugging_New in new PassManager.

llvm-svn: 32554
2006-12-13 20:03:48 +00:00
John Criswell b4208fe97e Remove DSA.
llvm-svn: 32553
2006-12-13 19:56:15 +00:00
John Criswell 2eeeab7754 Remove DSA header files.
llvm-svn: 32552
2006-12-13 19:55:53 +00:00
John Criswell 2bcf535e0f Remove DSA.
llvm-svn: 32542
2006-12-13 16:54:24 +00:00
Reid Spencer df1f19a8ef Change the interface to SCEVExpander::InsertCastOfTo to take a cast opcode
so the decision of which opcode to use is pushed upward to the caller.
Adjust the callers to pass the expected opcode.

llvm-svn: 32535
2006-12-13 08:06:42 +00:00
Evan Cheng 461a3648cc Update comments.
llvm-svn: 32532
2006-12-13 06:12:35 +00:00
Evan Cheng 37fc94a76e Update comments.
llvm-svn: 32531
2006-12-13 06:09:03 +00:00
Devang Patel b67904d1dc Add #ifdef switch toggle between old and new pass manager. However,
continue to use old pass manager at the moment. To use new manager
remove #define USE_OLD_PASSMANAGER 1 from Pass.h

llvm-svn: 32525
2006-12-13 02:36:01 +00:00
Devang Patel 08bed59d59 FunctionPassManager does not support runOnModule().
llvm-svn: 32519
2006-12-13 00:34:32 +00:00
Devang Patel 476a58a917 Move getAnalysis() and getAnalysisID() definitions from Pass.h to
PassAnalysisSupport.h

llvm-svn: 32518
2006-12-13 00:23:44 +00:00
Devang Patel ab97cf4c7c Implement PassManager_New destructors.
llvm-svn: 32517
2006-12-13 00:09:23 +00:00
Reid Spencer bb65ebf9a1 Replace inferred getCast(V,Ty) calls with more strict variants.
Rename getZeroExtend and getSignExtend to getZExt and getSExt to match
the the casting mnemonics in the rest of LLVM.

llvm-svn: 32514
2006-12-12 23:36:14 +00:00
Jim Laskey 6bb89d8054 Remove unneeded include.
llvm-svn: 32489
2006-12-12 19:36:53 +00:00
Jim Laskey 8171e58bd9 Rollback changes to take a different tack.
llvm-svn: 32488
2006-12-12 19:26:50 +00:00
Jim Laskey 7c3cab9ddc Honor the command line specification for machine type.
llvm-svn: 32483
2006-12-12 16:07:33 +00:00
Reid Spencer 56521c48fe Implement getIntegerCast and getFPCast for ConstantExpr. These are similar
to the createIntegerCast and createFPCast for CastInst instructions.

llvm-svn: 32457
2006-12-12 00:51:07 +00:00
Reid Spencer 7e93347b57 Implement createIntegerCast and createFPCast factory methods for handling
integer and floating point cast creation. createIntegerCast generates
ZExt/SExt, BitCast or Trunc. createFPCast generates FPExt, Bitcast, or
FPTrunc.

llvm-svn: 32456
2006-12-12 00:49:44 +00:00
Nate Begeman e8da58b3f9 Properly mangles symbol table names
Supports constant pools
Supports relocations to jump tables
Supports relocations within the data segment (global = address of global)
Allocates memory in a non-hacky for all non-code objects.

llvm-svn: 32430
2006-12-11 02:20:45 +00:00
Nate Begeman 5c56215232 Add a default relocation type, and allow clients to set the ConstantVal
field after creation.

llvm-svn: 32429
2006-12-11 02:19:29 +00:00
Anton Korobeynikov 3b7c257cae Cleaned setjmp/longjmp lowering interfaces. Now we're producing right
code (both asm & cbe) for Mingw32 target.
Removed autoconf checks for underscored versions of setjmp/longjmp.

llvm-svn: 32415
2006-12-10 23:12:42 +00:00
Evan Cheng e107a8b872 Added option -soft-float to generate SW fp library calls instead of fp instructions.
llvm-svn: 32393
2006-12-09 02:41:30 +00:00
Devang Patel 5fdac4070b Add AnalysisResolver_New.
llvm-svn: 32384
2006-12-08 23:52:04 +00:00
Devang Patel 9bdf7d46f6 Add AnalysisResolver_New. It is a replacement for existing
AnalysisResolver.

llvm-svn: 32383
2006-12-08 23:28:54 +00:00
Chris Lattner 8c9969ac03 Change the implementation of statistic to not need destructors at all.
Instead, the stat info is printed when llvm_shutdown() is called.
These also don't need static ctors, but getting rid of them is uglier:
still investigating.  This reduces the number of static dtors in llvm from
~1400 to ~750.

llvm-svn: 32372
2006-12-08 20:00:42 +00:00
Devang Patel 1f65368a82 Implement FunctionPassManager_New::FunctionPassManager_New(ModuleProvider *P)
llvm-svn: 32368
2006-12-08 18:57:16 +00:00
Evan Cheng 78cb08d082 Move findTiedToSrcOperand to TargetInstrDescriptor.
llvm-svn: 32366
2006-12-08 18:45:48 +00:00
Andrew Lenharth dcb3c978c4 Packed Structures
llvm-svn: 32361
2006-12-08 18:06:16 +00:00
Evan Cheng b5f1c22e94 Use MI's TargetInstrDescriptor.
llvm-svn: 32352
2006-12-08 07:57:56 +00:00
Bill Wendling 30c0f3367c Don't use <sstream> in Streams.h but <iosfwd> instead.
llvm-svn: 32340
2006-12-07 23:41:45 +00:00
Bill Wendling 355fc5ad50 Removed more <iostream> includes
llvm-svn: 32321
2006-12-07 20:28:15 +00:00
Reid Spencer fcb0dd3a0f Provide a getOpcode() method on CmpInst to ensure the opcode is returned
as the right type. Use this to shorten some code.

llvm-svn: 32300
2006-12-07 04:18:31 +00:00
Bill Wendling f3baad3ee1 Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
now cerr, cout, and NullStream resp.

llvm-svn: 32298
2006-12-07 01:30:32 +00:00
Jim Laskey 9a86d6c10b Ignoring the upper 32 bits of a 64 bit constant is not a good thing.
llvm-svn: 32294
2006-12-06 22:47:14 +00:00
Reid Spencer e51700983a For PR950:
Remove the getMaxValue and getMinValue functions from ConstantIntegral.
They don't make sense for a signless type. Also, for isMaxValue and
isMinValue, have the caller provided the signedness rather than obtaining
it from the constant's type.

llvm-svn: 32287
2006-12-06 20:30:17 +00:00
Reid Spencer b95504d8f5 Fix some 80 col violations.
llvm-svn: 32286
2006-12-06 20:28:46 +00:00
Chris Lattner 5bbf770764 merge the Statistic and StatisticBase classes, eliminating virtual methods
and eliminating #includes from the Statistic.h file.

llvm-svn: 32282
2006-12-06 18:20:44 +00:00
Chris Lattner 700b873130 Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.

llvm-svn: 32279
2006-12-06 17:46:33 +00:00
Evan Cheng 75c2194b1a Move copyKillDeadInfo out-of-line. Add findRegisterUseOperand().
llvm-svn: 32273
2006-12-06 08:27:42 +00:00
Chris Lattner fc9f1c9b86 Remove the dead CachedWriter class.
llvm-svn: 32271
2006-12-06 06:40:49 +00:00
Chris Lattner edcc8c2f8b Remove the 'printname' argument to WriteAsOperand. It is always true, and
passing false would make the asmprinter fail anyway.

llvm-svn: 32264
2006-12-06 06:16:21 +00:00
Chris Lattner 347b2cdc95 remove unused api
llvm-svn: 32261
2006-12-06 05:55:44 +00:00
Chris Lattner b1a268f08f add a helper to call llvm_shutdown()
llvm-svn: 32249
2006-12-06 01:01:14 +00:00
Reid Spencer f37dc65b08 Bail on the getInferredCast idea. Remove the function and convert
remaining uses to more specific casts.

llvm-svn: 32231
2006-12-05 19:14:13 +00:00
Reid Spencer b2ddc04321 Add cast creation functions for Pointer Casts, either BitCast or PtrToInt
llvm-svn: 32207
2006-12-04 23:14:27 +00:00
Reid Spencer 380d99cd3e Separate the get and getTy functions for ICmp and FCmp into getCompare
and getCompareTy. Also, fix some incorrect comments.

llvm-svn: 32199
2006-12-04 21:34:17 +00:00
Reid Spencer 49c5a86912 Unclutter this by using new cast creation functions.
llvm-svn: 32192
2006-12-04 20:18:26 +00:00
Reid Spencer 5c14088844 Implement new cast creation functions for both instructions and constant
expressions. These will get used to reduce clutter as we replace various
calls to createInferredCast and getCast.

llvm-svn: 32191
2006-12-04 20:17:56 +00:00
Reid Spencer 963e5b0867 For PR950: Provide an isCompare method for detection of ICmp and FCmp constant expressions. Change interfaces to allow for ICmp and FCmp predicate values.
llvm-svn: 32167
2006-12-04 05:19:02 +00:00
Reid Spencer 1a06389f06 Change inferred casts to explicit casts.
llvm-svn: 32165
2006-12-04 02:46:44 +00:00
Reid Spencer c4dacf2455 Take a baby step towards getting rid of inferred casts. Provide methods on
CastInst and ConstantExpr that allow the signedness to be explicitly passed
in and reliance on signedness removed from getCastOpcode. These are
temporary measures useful during the conversion of inferred casts.

llvm-svn: 32164
2006-12-04 02:43:42 +00:00
Reid Spencer 8a303a7c59 Remove dead code.
llvm-svn: 32157
2006-12-03 16:21:33 +00:00
Reid Spencer 10fbf0e02f Implement creation of ICmp and FCmp constant expressions.
llvm-svn: 32147
2006-12-03 05:48:19 +00:00
Chris Lattner 4d9fc5e896 Switch analysis groups to be unregistered when llvm_shutdown is called.
llvm-svn: 32110
2006-12-01 23:46:50 +00:00
Chris Lattner 1b368a0cf6 Start moving pass registration over to using the ManagedStatic mechanism.
This fixes issues where passes get unregistered before llvm_shutdown is
called, and is generally cleaner and simpler.  Analysis groups up next.

llvm-svn: 32108
2006-12-01 23:27:45 +00:00
Chris Lattner d321248d96 pass cfgonly up the ctor instead of calling an explicit method.
llvm-svn: 32105
2006-12-01 22:36:43 +00:00
Chris Lattner 23d540538d move 'cfgonly' pass tracking into PassInfo, instead of handling it with
yet-another global data structure.

llvm-svn: 32102
2006-12-01 22:21:11 +00:00
Chris Lattner 33fff0398a remove 'target constructor' support.
llvm-svn: 32100
2006-12-01 22:00:50 +00:00
Evan Cheng 2f89f04e5f Typo
llvm-svn: 32095
2006-12-01 21:50:17 +00:00
Evan Cheng dcd052e11a - Add getOperandConstraint() to TargetInstrDescriptor.
- convertToThreeAddress() change to allow single two-address MI to be converted
  into one or more 3-address MIs.

llvm-svn: 32094
2006-12-01 21:46:55 +00:00
Evan Cheng 022030a425 Add weak reference directive.
llvm-svn: 32091
2006-12-01 20:47:11 +00:00
Chris Lattner 70359e75bf Remove dead methods
llvm-svn: 32088
2006-12-01 20:14:47 +00:00
Chris Lattner f16661c3c6 add a new ConstantIntegral::get method. Simplify the implementation of
ConstantInt::get

llvm-svn: 32080
2006-12-01 19:20:02 +00:00
Reid Spencer 30477cd88e Define the HAVE_PTHREAD symbol.
llvm-svn: 32059
2006-12-01 03:46:01 +00:00
Jim Laskey b5b14060a8 Change global descriptor names to provide name, full name and linkage name.
llvm-svn: 32036
2006-11-30 14:35:45 +00:00
Evan Cheng 3c3ce98530 - MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode.
- Remove the ugly TargetInstrDescriptors hack.

llvm-svn: 32032
2006-11-30 07:08:44 +00:00
Reid Spencer 70c3dd4eff Get the delegation right for InstVisitor.
llvm-svn: 32025
2006-11-29 21:37:00 +00:00
Bill Wendling 7ec1a5befa Oops! didn't mean to put this in there yet.
llvm-svn: 32014
2006-11-29 07:31:23 +00:00
Chris Lattner 90f4238c38 add a hook to allow targets to hack on inline asms to lower them to llvm
when they want to.

llvm-svn: 31997
2006-11-29 01:12:32 +00:00
Bill Wendling 5c3966aa68 Converted to using llvm streams instead of <iostream>s
llvm-svn: 31992
2006-11-29 00:39:47 +00:00
Bill Wendling afd54eb8b6 Replacing std::iostreams with llvm iostreams. Some of these changes involve
adding a temporary wrapper around the ostream to make it friendly to
functions expecting an LLVM stream. This should be fixed in the future.

llvm-svn: 31990
2006-11-29 00:19:40 +00:00
Bill Wendling a38b3e15be Support for llvm_ostreams.
llvm-svn: 31988
2006-11-28 23:31:42 +00:00
Bill Wendling a60d8edfc9 Support for llvm streams.
llvm-svn: 31982
2006-11-28 22:45:17 +00:00
Chris Lattner 228bcd3802 Add a helper function
llvm-svn: 31981
2006-11-28 22:32:35 +00:00
Bill Wendling f89955be1b Added a temporary hack to get the llvm-streams to work for future checkins.
llvm-svn: 31978
2006-11-28 22:21:29 +00:00
Andrew Lenharth ff35b449a0 Add per-target support for asm translation in the cbe
llvm-svn: 31972
2006-11-28 19:52:20 +00:00
Evan Cheng db8f19fb90 Fix indentation.
llvm-svn: 31956
2006-11-28 02:22:51 +00:00
Bill Wendling cd2f1a897f Added helper function to transition to using llvm streams.
llvm-svn: 31953
2006-11-28 02:07:29 +00:00
Evan Cheng 20350c4025 Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
of opcode and number of operands.

llvm-svn: 31947
2006-11-27 23:37:22 +00:00
Bill Wendling f790e9de2c Protect against null streams.
llvm-svn: 31937
2006-11-27 10:45:49 +00:00
Reid Spencer 6c38f0bb07 For PR950:
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.

llvm-svn: 31931
2006-11-27 01:05:10 +00:00
Bill Wendling a88968b9c4 Add method that will take a function pointer so that it can handle things
like "llvm_cerr << std::flush";

llvm-svn: 31926
2006-11-26 10:51:51 +00:00
Chris Lattner 539df43e4b setOperand should not zap the operand list or add implicit operands to an
instruction.  Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.

This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll

llvm-svn: 31876
2006-11-20 17:57:22 +00:00
Reid Spencer d9436b6837 For PR950:
First in a series of patches to convert SetCondInst into ICmpInst and
FCmpInst using only two opcodes and having the instructions contain their
predicate value. Nothing uses these classes yet. More patches to follow.

llvm-svn: 31867
2006-11-20 01:22:35 +00:00
Chris Lattner 995a0175df MachineInstr includes this
llvm-svn: 31858
2006-11-18 21:48:05 +00:00
Chris Lattner ace542fa6c Implement operator<< for machine basic blocks to make it easier to dump them.
llvm-svn: 31857
2006-11-18 21:47:36 +00:00
Jim Laskey de5fa025ab Hopefully a good crack at making debugging work on intel -disable-fp-elim.
llvm-svn: 31830
2006-11-17 21:19:15 +00:00
Bill Wendling 7d9eb5dd33 Used llvm_ostream instead of std::ostream objects. This will reduce use
of the icky <iostream> class.

llvm-svn: 31818
2006-11-17 09:52:49 +00:00
Bill Wendling 3315869498 Added wrappers for the std::cerr/std::cout objects. The wrappers will
soon replace all uses of those objects.

llvm-svn: 31817
2006-11-17 09:51:22 +00:00
Bill Wendling ca6f6a43e0 #ifndef NDEBUG the "if (Stream) ..." stuff.
llvm-svn: 31803
2006-11-17 01:43:48 +00:00
Evan Cheng 84dd67e08a Add opcode to TargetInstrDescriptor.
llvm-svn: 31802
2006-11-17 01:36:01 +00:00
Bill Wendling fc01016c75 Adjusted the // comments so that doxygen picks them up.
llvm-svn: 31801
2006-11-17 01:13:12 +00:00
Bill Wendling d7fda04420 Added "DOUT" macro. This is used as a replacement for the std::cerr
stream. It centralizes the use of std::cerr so that static c'tor/d'tors
aren't scattered around all over the place. The way to use it is like this:

       DOUT << "This is a status line: " << Var << "\n";

If "-debug" is specified, it will print. Otherwise, it'll not print. If
NDEBUG is defined, the DOUT does nothing.

llvm-svn: 31798
2006-11-17 00:49:12 +00:00
Evan Cheng e03ca9b0b4 Allow target to specify alignment for function stub.
llvm-svn: 31788
2006-11-16 20:04:54 +00:00
Bill Wendling cc9816c87b Added "removeRange", which takes and removes an entire LiveRange.
llvm-svn: 31781
2006-11-16 02:43:32 +00:00
Bill Wendling c7969fd1e7 Added a new method "CreateNewLiveInterval" which, given a list of
LiveRanges, creates a new LiveInterval from them. The LiveRanges should
have existed already in another LiveInterval, but removed.

llvm-svn: 31780
2006-11-16 02:41:50 +00:00
Evan Cheng 8ae58b5828 ChangeToRegister should clear IsImp bit.
llvm-svn: 31772
2006-11-15 23:55:03 +00:00
Evan Cheng 70ec52896e Do away with kill / dead maps. Move kill / dead info onto MI's.
llvm-svn: 31759
2006-11-15 20:51:59 +00:00
Evan Cheng 5b536a0be9 Add copyKillDeadInfo to copy kill / dead info; other minor updates.
llvm-svn: 31758
2006-11-15 20:48:17 +00:00
Devang Patel 9f3083eef0 Add run(Function &F) support in FunctionPassManager_New
llvm-svn: 31756
2006-11-15 19:39:54 +00:00
Chris Lattner 2775aba51d Simplify IntrinsicLowering and clarify that it is only for use by the
CBE and interpreter.

llvm-svn: 31755
2006-11-15 18:00:10 +00:00
Reid Spencer 8f73ba7e05 Add a method to get the bit width of a packed type.
llvm-svn: 31750
2006-11-15 03:02:41 +00:00
Devang Patel af87fa3a63 Add doInitialization and doFinalization support in FunctionManager_New.
llvm-svn: 31747
2006-11-15 02:07:25 +00:00
Andrew Lenharth 0ad1e3845b A shim over other AA impls to catch incorrect uses
llvm-svn: 31724
2006-11-14 05:21:04 +00:00
Reid Spencer 1b89a7bcc1 Discard code that supported old bytecode formats. This makes the Bytecode
Reader code much easier to read and maintain. Backwards compatibility from
version 5 format has been retained. Older formats will produce an error.

llvm-svn: 31723
2006-11-14 04:47:22 +00:00
Evan Cheng dbd3d294e6 Matches MachineInstr changes.
llvm-svn: 31712
2006-11-13 23:36:35 +00:00
Evan Cheng 77af6ac5e8 - Let MachineInstr ctors add implicit def and use operands. Other operands
will be inserted before these operands. If the opcode changes (by
  setOpcode), the implicit operands are updated as well.
- Added IsKill, IsDead fields to MachineOperand in preparation for changes
  that move kill / dead info to MachineInstr's.

llvm-svn: 31711
2006-11-13 23:34:06 +00:00
Reid Spencer b608daeec3 Revert premature patch.
llvm-svn: 31692
2006-11-11 23:06:47 +00:00
Reid Spencer 8b8913ba61 Document new constant expr operators, rename bitconvert as bitcast.
llvm-svn: 31691
2006-11-11 22:34:59 +00:00
Reid Spencer 3005d47797 Minor style fixes from review.
llvm-svn: 31685
2006-11-11 19:59:25 +00:00
Reid Spencer 75db664f44 For PR998:
Fix an infinite loop in the Linker and a few other assorted link problems.

Patch contributed by Scott Michel. Thanks, Scott!

llvm-svn: 31680
2006-11-11 11:54:25 +00:00
Evan Cheng 979bbf48d5 Add methods to add implicit def use operands to a MI.
llvm-svn: 31675
2006-11-11 10:20:02 +00:00
Devang Patel a98445962d Move CommonPassManagerImpl from PassManager.h to PassManager.cpp
llvm-svn: 31666
2006-11-11 01:31:05 +00:00
Devang Patel 643676c1f5 Keep track if analysis made available by the pass.
llvm-svn: 31664
2006-11-11 01:10:19 +00:00
Devang Patel 6c9f548704 Keep track of analysis required by the passes. Force use of new pass
manager if a pass does not preserve analysis that is used by other
passes.

llvm-svn: 31659
2006-11-11 00:42:16 +00:00
Devang Patel 0ed477969f s/PassManagerAnalysisHelper/CommonPassManagerImpl
Inherit CommonPassManagerImpl from Pass.

llvm-svn: 31642
2006-11-10 21:33:13 +00:00
Jim Laskey 0c75372933 Shut up the warning.
llvm-svn: 31635
2006-11-10 14:44:12 +00:00
Evan Cheng f5bebe83a5 Add implicit def / use operands to MachineInstr.
llvm-svn: 31632
2006-11-10 08:32:14 +00:00
Chris Lattner 6dbe06de39 allow clients to indicate that they never want lazy compilation.
llvm-svn: 31600
2006-11-09 19:30:47 +00:00
Evan Cheng d550248f2c Add a mechanism to specify whether a target supports a particular indexed load / store.
llvm-svn: 31597
2006-11-09 18:56:43 +00:00
Evan Cheng b15000736c Rename ISD::MemOpAddrMode to ISD::MemIndexedMode
llvm-svn: 31595
2006-11-09 17:55:04 +00:00
Jim Laskey 48b21d5024 math.h creates ambiguity
llvm-svn: 31591
2006-11-09 08:26:22 +00:00
Jim Laskey 31890e7e86 math.h for C's sake.
llvm-svn: 31590
2006-11-09 08:05:39 +00:00
Evan Cheng b58e06bc9e getPostIndexedAddressParts change: passes in load/store instead of its loaded / stored VT.
llvm-svn: 31584
2006-11-09 04:29:46 +00:00
Evan Cheng 1698c2999c Remove M_2_ADDR_FLAG.
llvm-svn: 31583
2006-11-09 02:22:54 +00:00
Jim Laskey 7b6fb8048e Make sure <cmath> comes first
llvm-svn: 31559
2006-11-08 18:48:14 +00:00
Jim Laskey 3caa009892 Add backup support for HUGH_VALF.
llvm-svn: 31553
2006-11-08 17:19:29 +00:00
Jim Laskey ac05d7d084 Wasn't handling case of when machine move labels were undefined.
llvm-svn: 31548
2006-11-08 14:16:39 +00:00
Devang Patel 4e12f86a1b Split FunctionPassManager_New into FunctionPassManager_New and FunctionPassManagerImpl_New.
FunctionPassManagerImpl_New implements the pass manager.
FunctionPassManager_New is the public interface.

llvm-svn: 31547
2006-11-08 10:44:40 +00:00
Devang Patel 376fefafb2 Split PassManager_New into PassManager_New and PassManagerImpl_New.
PassManagerImpl_New implements the pass manager.
PassManager_New is the public interface.

llvm-svn: 31546
2006-11-08 10:29:57 +00:00
Devang Patel ca58e3532f Move BasicBlockPassManager_New, FunctionPassManager_New and
ModulePassManager_New class declarations from PassManager.h
to PassManager.cpp

llvm-svn: 31545
2006-11-08 10:05:38 +00:00
Reid Spencer fdff938a7e For PR950:
This patch converts the old SHR instruction into two instructions,
AShr (Arithmetic) and LShr (Logical). The Shr instructions now are not
dependent on the sign of their operands.

llvm-svn: 31542
2006-11-08 06:47:33 +00:00
Devang Patel 800596d60e Beautify.
Clarify comments.

llvm-svn: 31529
2006-11-08 00:19:31 +00:00
Devang Patel cc85563dd9 Derive new pass managers from PassManagerAnalysisHelper.
llvm-svn: 31525
2006-11-07 22:44:55 +00:00
Devang Patel f68a34908d Introduce PassManagerAnalysisHelper.
llvm-svn: 31522
2006-11-07 22:35:17 +00:00
Devang Patel c290c8a2c8 Add PassManager_New.
llvm-svn: 31521
2006-11-07 22:23:34 +00:00
Devang Patel 85da9b73b7 Fix comment.
llvm-svn: 31518
2006-11-07 22:04:53 +00:00
Devang Patel 05e1a970f3 Add ModulePassManager_New.
llvm-svn: 31517
2006-11-07 22:03:15 +00:00
Devang Patel 0c2012ffb3 Add FunctionPassManager_New.
llvm-svn: 31515
2006-11-07 21:49:50 +00:00
Devang Patel 6e5a113923 Add BasicBlockPassManager_New.
llvm-svn: 31513
2006-11-07 21:31:57 +00:00
Jim Laskey 6ea4fae838 1. Add a pass to fold debug label instructions so a debug info client can detect
empty ranges.

2. Reorg how MachineDebugInfo maintains changes to debug labels.

3. Have dwarf writer use debug label info to simplify scopes and source line
coorespondence.

4. Revert the merging of compile units until I can get the bugs ironed out.

llvm-svn: 31507
2006-11-07 19:33:46 +00:00
Evan Cheng b391e3509a Added target hook for post-indexed memory ops transformation.
llvm-svn: 31499
2006-11-07 09:04:16 +00:00
Chris Lattner 8ceabde4cb Add a new operand flag to mark which operand is the first predicate operand
of an M_PREDICATED instruction.

llvm-svn: 31482
2006-11-06 23:53:08 +00:00
Chris Lattner 27f894f3bf add a flag so that predicated instructions can be recognized by branch
folding

llvm-svn: 31479
2006-11-06 21:44:17 +00:00
Reid Spencer c7ed09bef7 Fix a small bug noticed on code review.
llvm-svn: 31476
2006-11-06 18:47:14 +00:00
Jeff Cohen 7d6f3db3e2 Unbreak VC++ build.
llvm-svn: 31464
2006-11-05 19:31:28 +00:00
Reid Spencer d549edc2cc Add a -disable-cbe-printf-a option so that the output of the C Backend
stands a chance of being compiled with a non C99 C compiler. The default
is enabled so you must specifically disable this feature if you want the
CBE output compiled with an older C compiler.

llvm-svn: 31461
2006-11-05 17:08:18 +00:00
Evan Cheng 1a1e23eff7 Added getIndexedStore.
llvm-svn: 31458
2006-11-05 09:30:09 +00:00
Evan Cheng 1bc4e8a26a Move to operand constraints for two-address instructions.
llvm-svn: 31452
2006-11-04 09:42:53 +00:00
Evan Cheng 9456dd8b81 Fix comments.
llvm-svn: 31414
2006-11-03 07:31:32 +00:00
Evan Cheng 1dfd26a151 Rename
llvm-svn: 31413
2006-11-03 07:21:16 +00:00
Evan Cheng 76326b0540 Added a target specific hook to check whether / how a node can be transformed
into a pair of base / offset nodes for pre-indexed load / store ops.

llvm-svn: 31407
2006-11-03 03:04:06 +00:00
Evan Cheng fe70c79e67 Add isPredecessor to check whether a node is another's predecessor.
llvm-svn: 31406
2006-11-03 03:02:18 +00:00
Chris Lattner 16e05c378d silence warning
llvm-svn: 31402
2006-11-03 01:45:13 +00:00
Jim Laskey eb0fd251c1 Allow FoldingSet clients to pump up the initial hash size.
llvm-svn: 31377
2006-11-02 14:21:26 +00:00
Reid Spencer 7eb55b395f For PR950:
Replace the REM instruction with UREM, SREM and FREM.

llvm-svn: 31369
2006-11-02 01:53:59 +00:00
Chris Lattner 454b5c9bce generalize this api
llvm-svn: 31365
2006-11-02 01:39:10 +00:00
Evan Cheng 93cdd149f7 Rename
llvm-svn: 31364
2006-11-01 23:18:32 +00:00
Evan Cheng 1b2e60e970 Added getTiedToSrcOperand() to check for two-address'ness.
llvm-svn: 31360
2006-11-01 23:00:31 +00:00
Evan Cheng 91f120f4fa Add a printSetLabel that takes two id's.
llvm-svn: 31347
2006-11-01 09:23:08 +00:00
Evan Cheng ac79c7c4c0 Add operand constraints to TargetInstrInfo.
llvm-svn: 31333
2006-11-01 00:27:05 +00:00
Chris Lattner 8c6949e5b2 Change the prototype for TargetLowering::isOperandValidForConstraint
llvm-svn: 31318
2006-10-31 19:40:43 +00:00
Anton Korobeynikov 49993529eb Unbreaking static ctors patch.
Defaulting second arguments of SwitchTo*Section, this should make things
somehow clearer.

llvm-svn: 31306
2006-10-31 06:11:06 +00:00
Reid Spencer f9588dc396 Don't mislead readers by claiming a variable is defaulted to false when
the default is actually true.

llvm-svn: 31300
2006-10-30 22:46:49 +00:00
Reid Spencer b51b5c0b1f Add debug support for X86/ELF targets (Linux). This allows llvm-gcc4
generated object modules to be debugged with gdb. Hopefully this helps
pre-release debugging.

llvm-svn: 31299
2006-10-30 22:32:30 +00:00
Jim Laskey 43c19124bb Simplify DwarfWriter header.
llvm-svn: 31295
2006-10-30 13:35:07 +00:00
Evan Cheng c3e695137d Added a new SDNode type: BR_JT for jumptable branch.
llvm-svn: 31292
2006-10-30 07:59:36 +00:00
Chris Lattner 725b8637e3 add a new form of insert.
llvm-svn: 31290
2006-10-30 05:07:51 +00:00
Chris Lattner 15fffeedca Add SmallString a (currently) minimal class that adapts SmallVector to be
more string-like.

llvm-svn: 31289
2006-10-30 03:39:20 +00:00
Chris Lattner 2716c6f8d8 add a method
llvm-svn: 31288
2006-10-30 03:14:15 +00:00
Chris Lattner ba1d30424f add newline at end of file
llvm-svn: 31287
2006-10-29 23:47:01 +00:00
Chris Lattner 149e666baf add a highly efficient hash table that is specialized for mapping C strings
to some other type.

llvm-svn: 31286
2006-10-29 23:42:03 +00:00
Chris Lattner b9de90377f Add a new llvm::Allocator abstraction, which will be used by a container
I'm about to add.  This is similar to, but necessarily different than, the
STL allocator class.

llvm-svn: 31285
2006-10-29 22:08:03 +00:00
Chris Lattner 9233002334 add an assertion
llvm-svn: 31272
2006-10-28 18:21:51 +00:00
Chris Lattner ca84c3e441 remove dead method
llvm-svn: 31271
2006-10-28 18:21:29 +00:00
Chris Lattner 632232132a add a method for hacking on JTIdx's
llvm-svn: 31270
2006-10-28 18:18:36 +00:00
Chris Lattner cde339cf1e const'ify jump table stuff
llvm-svn: 31269
2006-10-28 18:17:09 +00:00
Chris Lattner 853b19a679 add a method for deleting dead jump tables.
llvm-svn: 31268
2006-10-28 18:12:00 +00:00
Chris Lattner a4a2157405 determine whether a change was made
llvm-svn: 31265
2006-10-28 18:00:05 +00:00
Chris Lattner 53ebf20c26 add another target hook for branch folding.
llvm-svn: 31262
2006-10-28 17:29:57 +00:00
Chris Lattner 3e763f5708 add option to isCriticalEdge
llvm-svn: 31258
2006-10-28 06:58:17 +00:00
Chris Lattner 80ea207bfa Expose a smarter way to break critical edges.
llvm-svn: 31256
2006-10-28 06:44:56 +00:00
Jim Laskey 9ceb24bd5b Editorial clean up.
llvm-svn: 31250
2006-10-28 01:34:21 +00:00
Chris Lattner 23540b142c add a method
llvm-svn: 31249
2006-10-28 01:24:05 +00:00
Jim Laskey f576b42bb2 Switch over from SelectionNodeCSEMap to FoldingSet.
llvm-svn: 31240
2006-10-27 23:46:08 +00:00
Jim Laskey c6b12bd2b1 Clean up
llvm-svn: 31238
2006-10-27 22:52:02 +00:00
Chris Lattner ed0110b949 Turn conditions like x<Y|z==q into multiple blocks.
This compiles Regression/CodeGen/X86/or-branch.ll into:

_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $5, %eax
        jl LBB1_1       #cond_true
LBB1_3: #entry
        testl %ecx, %ecx
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret

instead of:

_foo:
        subl $12, %esp
        call L_bar$stub
        movl 20(%esp), %eax
        movl 16(%esp), %ecx
        cmpl $4, %eax
        setg %al
        testl %ecx, %ecx
        setne %cl
        testb %cl, %al
        jne LBB1_2      #UnifiedReturnBlock
LBB1_1: #cond_true
        call L_bar$stub
        addl $12, %esp
        ret
LBB1_2: #UnifiedReturnBlock
        addl $12, %esp
        ret

And on ppc to:

        cmpwi cr0, r29, 5
        blt cr0, LBB1_1 ;cond_true
LBB1_3: ;entry
        cmplwi cr0, r30, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock

instead of:

        cmpwi cr7, r4, 4
        mfcr r2
        addic r4, r3, -1
        subfe r30, r4, r3
        rlwinm r29, r2, 30, 31, 31
        and r2, r29, r30
        cmplwi cr0, r2, 0
        bne cr0, LBB1_2 ;UnifiedReturnBlock

llvm-svn: 31230
2006-10-27 21:36:01 +00:00
Jim Laskey 6ca4a345dd Apply editorials.
llvm-svn: 31218
2006-10-27 18:05:12 +00:00
Jim Laskey 43bc1847a2 Breakout folding hash set from SelectionDAGCSEMap.
llvm-svn: 31215
2006-10-27 16:16:16 +00:00
Evan Cheng a19c670eba Indexed load / store changes.
llvm-svn: 31208
2006-10-26 21:52:24 +00:00
Devang Patel a9abd62ede Save temp. bc files when saveTemps flag is true. Use final output file
name supplied by linker to construct temp bc file names.

Remove tabs.

llvm-svn: 31205
2006-10-26 20:46:22 +00:00
Evan Cheng 684ba840eb Added CStringSection.
llvm-svn: 31202
2006-10-26 19:16:20 +00:00
Evan Cheng 3763c5b1c4 Add isCString() - returns true if a ConstantArray is a CString.
llvm-svn: 31201
2006-10-26 19:15:05 +00:00
Chris Lattner fac5f9110c Add isFPOrFPVector() method, which indicates if a type is either FP or a
vector of FP types.

llvm-svn: 31198
2006-10-26 18:22:45 +00:00
Reid Spencer 7e80b0b31e For PR950:
Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.

llvm-svn: 31195
2006-10-26 06:15:43 +00:00
Devang Patel 07631698ac Supply alignment info to linker through LLVMSymbol.
llvm-svn: 31181
2006-10-25 18:10:07 +00:00
Devang Patel 373beb28ae TargetData is not subclassed. So no need to have virtual method.
llvm-svn: 31173
2006-10-24 20:48:29 +00:00
Devang Patel 71b99297aa Move getPreferredAlignmentLog from AsmPrinter to TargetData
llvm-svn: 31171
2006-10-24 20:32:14 +00:00
Devang Patel b0a5e39b26 Instead of hard coding global prefix, use TargetAsmInfo.
Add LTO destructor.

llvm-svn: 31168
2006-10-24 18:41:02 +00:00
Chris Lattner 963ddad31a Generalize CaseBlock a bit more:
Rename LHSBB/RHSBB to TrueBB/FalseBB.  Allow the RHS value to be null,
in which case the LHS is treated as a bool.

llvm-svn: 31166
2006-10-24 17:57:59 +00:00
Chris Lattner ad65879c9b update comment
llvm-svn: 31165
2006-10-24 17:41:22 +00:00
Chris Lattner 3f179d24c6 generalize 'CaseBlock'. It really allows any comparison to be inserted.
llvm-svn: 31161
2006-10-24 17:03:35 +00:00
Rafael Espindola 5efa6c5d10 fix assert comment
llvm-svn: 31154
2006-10-24 14:47:28 +00:00
Jim Laskey 516cd40b5c Tighter data structure for deleted debug labels.
llvm-svn: 31152
2006-10-24 11:50:43 +00:00
Chris Lattner 528ed09bc1 add missing dcb* intrinsics
llvm-svn: 31147
2006-10-24 01:07:39 +00:00
Chris Lattner c76d7ac0fa add two helper methods
llvm-svn: 31143
2006-10-23 23:35:35 +00:00
Devang Patel 6c01383118 Add removeModule().
llvm-svn: 31142
2006-10-23 23:12:26 +00:00
Andrew Lenharth 1de8fc671e change this back
llvm-svn: 31134
2006-10-23 19:52:54 +00:00
Jim Laskey 5e1a34032b More complete solution to deleting blocks and debug info.
llvm-svn: 31129
2006-10-23 14:56:37 +00:00
Chris Lattner 097971202e New, wonderful isSuccessor method
llvm-svn: 31103
2006-10-21 06:50:05 +00:00
Chris Lattner 96fd2b28f1 typo
llvm-svn: 31089
2006-10-20 22:44:45 +00:00
Chris Lattner 0f4db78dfe add isIdenticalTo method to machineinstr/operand.
llvm-svn: 31087
2006-10-20 22:39:36 +00:00
Chris Lattner 819cb9ad61 add method
llvm-svn: 31066
2006-10-20 18:00:03 +00:00
Reid Spencer a91e4be84f Fix a comment to be accurate.
llvm-svn: 31064
2006-10-20 07:24:55 +00:00
Reid Spencer e0fc4dfc22 For PR950:
This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.

llvm-svn: 31063
2006-10-20 07:07:24 +00:00
Chris Lattner 23dd1f6325 add a method to determine whether evaluation of a constant can trap.
llvm-svn: 31059
2006-10-20 00:27:06 +00:00
Owen Anderson e223754ff4 Add support for the new "target data" information in .ll files. This provides
a better encoding of the targets data layout, rather than trying to guess it
from the endianness and pointersize like before.

llvm-svn: 31030
2006-10-18 02:21:12 +00:00
Chris Lattner 34136d0cc1 add a method to remove a line # record.
llvm-svn: 31025
2006-10-17 23:16:42 +00:00
Chris Lattner 0408e5b7ce expose DWARF_LABEL opcode# so the branch folder can update debug info properly.
llvm-svn: 31024
2006-10-17 22:41:45 +00:00
Chris Lattner e1a72005de update comment
llvm-svn: 31023
2006-10-17 22:12:15 +00:00
Chris Lattner 145f6b3ec8 Do not leak all of the SourceLineInfo objects. Do not bother mallocing each
one separately.

llvm-svn: 31022
2006-10-17 22:06:46 +00:00
Chris Lattner 0b14f9c249 minor cleanups
llvm-svn: 31021
2006-10-17 21:51:44 +00:00
Evan Cheng b944a6add4 Split PRE_INDEXED to PRE_INC / PRE_DEC and similarly for POST_INDEXED.
llvm-svn: 31015
2006-10-17 21:12:56 +00:00
Jim Laskey d24b913a61 Clean up interface to getGlobalLinkName.
llvm-svn: 31001
2006-10-17 17:17:24 +00:00
Jim Laskey 7126254a0e Basic support for getGlobalLinkName.
llvm-svn: 30997
2006-10-17 13:41:07 +00:00
Jim Laskey dcb2b83886 Pass AliasAnalysis thru to DAGCombiner.
llvm-svn: 30984
2006-10-16 20:52:31 +00:00
Chris Lattner e7d49862a5 add a ReplaceMBBInJumpTables method
llvm-svn: 30983
2006-10-16 20:41:42 +00:00
Evan Cheng 95f51a0871 Start checking from the root of the matched sub-tree.
llvm-svn: 30957
2006-10-14 08:30:53 +00:00
Chris Lattner bd9acad805 When SimplifySetCC was moved to the DAGCombiner, it was never removed from
SelectionDAG and it has since bitrotted.  Remove the copy from SelectionDAG.
Next, remove the constant folding piece of DAGCombiner::SimplifySetCC into
a new FoldSetCC method which can be used by getNode() and SimplifySetCC.

This fixes obscure bugs.

llvm-svn: 30952
2006-10-14 00:41:01 +00:00
Evan Cheng ab51cf2e78 Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.
llvm-svn: 30945
2006-10-13 21:14:26 +00:00
Chris Lattner df1ca3ff63 it is easier to implement these when they are virtual
llvm-svn: 30944
2006-10-13 21:02:27 +00:00
Chris Lattner 68b41e570e allow branch reversal to fail
llvm-svn: 30943
2006-10-13 20:59:31 +00:00
Bill Wendling a45a08a706 Corrected formatting.
llvm-svn: 30942
2006-10-13 20:53:50 +00:00
Chris Lattner 9516812316 replace the existing branch inspection/modification APIs with something more
useful and general.

llvm-svn: 30940
2006-10-13 20:44:01 +00:00
Chris Lattner 95129a7f22 Expose method and ivars for measuring inline asm length properly.
llvm-svn: 30934
2006-10-13 17:50:07 +00:00
Chris Lattner 78d838186c simplify trivial function
llvm-svn: 30924
2006-10-12 23:50:28 +00:00
Evan Cheng a731cb674a Add RemoveDeadNode to remove a dead node and its (potentially) dead operands.
llvm-svn: 30916
2006-10-12 20:34:05 +00:00
Evan Cheng d35734bd1f Naming consistency.
llvm-svn: 30878
2006-10-11 07:10:22 +00:00
Andrew Lenharth a6bbf33cbf Jimptables working again on alpha.
As a bonus, use the GOT node instead of the AlphaISD::GOT for internal stuff.

llvm-svn: 30873
2006-10-11 04:29:42 +00:00
Chris Lattner 6df349676e add two helper methods.
llvm-svn: 30869
2006-10-11 03:58:02 +00:00
Evan Cheng e01ee43cdc Comments; getChain(), getBasePtr(), etc. should return a SDOperand by value.
llvm-svn: 30850
2006-10-10 01:44:58 +00:00
Evan Cheng 0a2a4b1fbe Merging ISD::LOAD and ISD::LOADX. Added LoadSDNode to represent load nodes.
Chain and address ptr remains as operands. SrcValue, extending mode, extending
VT (or rather loaded VT before extension) are now instance variables of
LoadSDNode.

Introduce load / store addressing modes to represent pre- and post-indexed
load and store. Also added an additional operand offset that is only used in
post-indexed mode (i.e. base ptr += offset after load/store).

Added alignment info (not yet used) and isVolatile fields.

llvm-svn: 30843
2006-10-09 20:55:20 +00:00
Andrew Lenharth 68ca2c483f Fix build error in gcc 3.4 and make more this general
llvm-svn: 30839
2006-10-09 19:05:44 +00:00
Nick Lewycky afb040a603 Fix usage example.
llvm-svn: 30837
2006-10-09 18:33:08 +00:00
Chris Lattner 9e512e5bd0 Fix PR897
llvm-svn: 30820
2006-10-08 22:28:34 +00:00
Chris Lattner 1c52b57ea8 Add support for targets to declare that they use a GOT
llvm-svn: 30777
2006-10-06 22:46:34 +00:00
Chris Lattner 469ea0c94d add an accessor
llvm-svn: 30761
2006-10-06 01:16:29 +00:00
Evan Cheng af309d29b1 Add getStore() helper function to create ISD::STORE nodes.
llvm-svn: 30758
2006-10-05 22:57:11 +00:00
Chris Lattner 65511ff69d Add insertelement/extractelement helper ctors.
llvm-svn: 30750
2006-10-05 06:24:58 +00:00
Chris Lattner 40a95dd347 remove JumpTableTextSection
llvm-svn: 30746
2006-10-05 03:14:23 +00:00
Chris Lattner a6a570e02f Pass the MachineFunction into EmitJumpTableInfo.
llvm-svn: 30742
2006-10-05 03:01:21 +00:00
Chris Lattner 0dca927148 move getSectionForFunction to AsmPrinter.
llvm-svn: 30734
2006-10-05 02:41:43 +00:00
Chris Lattner afe6d7a179 Give TargetAsmInfo a virtual dtor, add a new getSectionForFunction method.
llvm-svn: 30732
2006-10-05 00:35:16 +00:00
Evan Cheng 5d9fd977d3 Combine ISD::EXTLOAD, ISD::SEXTLOAD, ISD::ZEXTLOAD into ISD::LOADX. Add an
extra operand to LOADX to specify the exact value extension type.

llvm-svn: 30714
2006-10-04 00:56:09 +00:00
Chris Lattner 9744b68d57 ADd a method
llvm-svn: 30707
2006-10-03 20:16:45 +00:00
Chris Lattner 64fd9487bd Provide a function that ensures MBB numbering is dense and inorder. This
can be used by MachineFunctionPasses who need this property.

llvm-svn: 30706
2006-10-03 19:18:57 +00:00
Chris Lattner e385fcf098 clean up use of 'explicit'. This is PR934.
Patch contributed by Kevin Sopp!

llvm-svn: 30701
2006-10-03 17:09:12 +00:00
Bill Wendling 984f0ce06b Fix for PR929. The PHI nodes were being gone through for each instruction
in a successor block for every block...resulting in some O(N^k) algorithm
which wasn't very good for performance. Calculating this information up
front and keeping it in a map made it much faster.

llvm-svn: 30697
2006-10-03 07:20:20 +00:00
Chris Lattner 1faa3f913c Move DominatorTree to immediately follow DominatorTreeBase
llvm-svn: 30693
2006-10-03 05:24:56 +00:00
Jim Laskey 1368c265da Add ability to annotate (color) nodes in a viewGraph.
llvm-svn: 30686
2006-10-02 12:26:53 +00:00
Chris Lattner 456a806692 Override use_back in instruction/basicblock to provide more type information.
llvm-svn: 30678
2006-09-30 22:20:34 +00:00
Chris Lattner 87732cfb71 Add a version of the globalvariable ctor that inserts at a specific location.
llvm-svn: 30677
2006-09-30 21:31:26 +00:00
Chris Lattner befaee91d3 Now that ConstantBool::True/False are gone, we can modify Type.cpp to
eliminate its static dtors, without having code that depends on order of
initialization.  Eliminate static ctors/dtors from Type.cpp.

llvm-svn: 30667
2006-09-28 23:38:07 +00:00
Chris Lattner a84df0a2f1 Eliminate ConstantBool::True and ConstantBool::False. Instead, provide
ConstantBool::getTrue() and ConstantBool::getFalse().

llvm-svn: 30666
2006-09-28 23:36:21 +00:00
Chris Lattner a9caf95591 refactor critical edge breaking out into the SplitCritEdgesForPHIConstants method.
This is a baby step towards fixing PR925.

llvm-svn: 30643
2006-09-28 06:17:10 +00:00
Chris Lattner b044ab2b82 remove dead method
llvm-svn: 30640
2006-09-28 00:37:43 +00:00
Chris Lattner 9daff49ebb new helper class to provide more explicit management of static ctor/dtors.
llvm-svn: 30638
2006-09-28 00:31:55 +00:00
Evan Cheng 17a8d08dba - Added a hook processFunctionBeforeCalleeSaveScn(). This is called by PEI just
before it determines which callee-save registers are to be spilled. This allows
the target to make changes such as forcing certain physical registers to be
spilled.
- Modified comments. It's important to note the order of registers in the array
returns by getCalleeSaveRegs() determines the order of callee save spill code.

llvm-svn: 30635
2006-09-28 00:07:19 +00:00
Chris Lattner a32814b033 Add support for ${:comment}, which expands to the current target's comment
character, and ${:uid} which expands to a unique ID for the MachineInstr.
More can be added if/when they are needed.

llvm-svn: 30619
2006-09-26 23:59:50 +00:00
Chris Lattner 66af390631 Add support for targets that want to do something with the llvm.used list,
because they have an aggressive linker that does dead code stripping.

llvm-svn: 30604
2006-09-26 03:38:18 +00:00
Chris Lattner 991d3997cf order this properly to avoid warnings in TargetAsmInfo.cpp. Add a comment
in a format that matches every other ivars in this class.

llvm-svn: 30603
2006-09-25 22:38:36 +00:00
Andrew Lenharth 783a4a9d86 Add support for other relocation bases to jump tables, as well as custom asm directives
llvm-svn: 30593
2006-09-24 19:45:58 +00:00
Chris Lattner e4583e8c2c remove misleading comment
llvm-svn: 30585
2006-09-23 06:09:45 +00:00
Chris Lattner 4091f4690a add method, correct comment
llvm-svn: 30584
2006-09-23 04:03:45 +00:00
Devang Patel 0c4e730c9c Use iterative algorith to assign DFS number. This reduces
call stack depth.

llvm-svn: 30575
2006-09-22 01:05:33 +00:00
Devang Patel 5af1651f7d Use abstract class to facilitate dlopen() interface.
llvm-svn: 30569
2006-09-21 17:22:55 +00:00
Nick Lewycky 86bda361b0 Fix findCaseDest to return null when BB is both the default dest and one
of the numeric cases.

llvm-svn: 30468
2006-09-18 20:44:37 +00:00
Nick Lewycky 51cb632a1b Add a new helper method to SwitchInst. Useful when you've got a BB from
somewhere (like the dominator graph) and would like to know which case it
came from.

llvm-svn: 30466
2006-09-18 19:03:59 +00:00
Jim Laskey d30bba331f Sort out mangled names for globals
llvm-svn: 30460
2006-09-18 14:47:26 +00:00
Chris Lattner 04fb628ea6 Add support for pattern matching cast operations
llvm-svn: 30454
2006-09-18 05:17:11 +00:00
Chris Lattner 8f499f1772 fix typo
llvm-svn: 30453
2006-09-18 04:58:06 +00:00
Chris Lattner b0b8ddd175 add a helper method
llvm-svn: 30452
2006-09-18 04:54:57 +00:00
Anton Korobeynikov 6f7072c66a Added some eye-candy for Subtarget type checking
Added X86 StdCall & FastCall calling conventions. Codegen will follow.

llvm-svn: 30446
2006-09-17 20:25:45 +00:00
Chris Lattner f16dc007e6 Add ShiftInst::isLogical/ArithmeticShift methods.
llvm-svn: 30445
2006-09-17 19:29:56 +00:00
Chris Lattner e1496fbb33 Add new SetCondInst::isRelational/isEquality methods. Rename
Instruction::isRelational to Instruction::isComparison.

llvm-svn: 30444
2006-09-17 19:14:47 +00:00
Chris Lattner 8fb3d445f5 Keep track of the start of MBB's in a separate map from instructions. This
is faster and is needed for future improvements.

llvm-svn: 30383
2006-09-15 03:57:23 +00:00
Devang Patel 9ce9df5912 Undo previous check-in.
Reintroduce recursive assignDFSNumber().

llvm-svn: 30380
2006-09-14 21:43:24 +00:00
Anton Korobeynikov d61d39ec53 Adding dllimport, dllexport and external weak linkage types.
DLL* linkages got full (I hope) codegeneration support in C & both x86
assembler backends.
External weak linkage added for future use, we don't provide any
codegeneration, etc. support for it.

llvm-svn: 30374
2006-09-14 18:23:27 +00:00
Evan Cheng 0460f42da9 Add MachineConstantPoolEntry getOffset() accessor.
llvm-svn: 30325
2006-09-14 07:32:32 +00:00
Evan Cheng 316843372e The top bit is used to determine whether it's a MachineConstantPoolValue.
llvm-svn: 30324
2006-09-14 07:30:48 +00:00
Chris Lattner 3a68d40dd3 revert accidentally committed file
llvm-svn: 30323
2006-09-14 06:42:17 +00:00
Chris Lattner e1a6cec41b Remove dead methods, add getNumBlockIDs() method
llvm-svn: 30322
2006-09-14 06:40:48 +00:00
Reid Spencer d28c7c87d7 Add a HAVE_MACH_MACH_H #define to detect the presence of the mach/mach.h
header file on Darwin.

llvm-svn: 30319
2006-09-14 06:17:21 +00:00
Evan Cheng affe88eeac Mirrors ConstantPoolSDNode.
llvm-svn: 30314
2006-09-14 05:48:39 +00:00
Devang Patel 23d855b40d Avoid recursion in assignDFSNumber(). Move def from ET-Forest.h
to Dominators.h

llvm-svn: 30309
2006-09-14 01:27:42 +00:00
Evan Cheng 45fe3bc72c Added support for machine specific constantpool values. These are useful for
representing expressions that can only be resolved at link time, etc.

llvm-svn: 30278
2006-09-12 21:00:35 +00:00
Nick Lewycky a3e70372c9 Add ability to remove nodes from DominatorTree, for when a BasicBlock
is being removed.

llvm-svn: 30270
2006-09-12 00:18:28 +00:00
Nate Begeman a0d95a8da9 Behold, more work on relocations. Things are looking pretty good now.
llvm-svn: 30240
2006-09-10 23:03:44 +00:00
Chris Lattner b3c366a3bd Implement new fpowi node
llvm-svn: 30223
2006-09-09 05:55:44 +00:00
Nate Begeman 69df6132d7 First pass at supporting relocations. Relocations are written correctly to
the file now, however the relocated address is currently wrong.  Fixing
that will require some deep pondering.

llvm-svn: 30207
2006-09-08 22:42:09 +00:00
Chris Lattner 02a7d09b40 add powi intrinsics.
llvm-svn: 30176
2006-09-08 06:43:00 +00:00
Jim Laskey ae92ce8798 1. Remove condition on delete.
2. Protect and outline createTargetAsmInfo.

3. Misc. kruft.

llvm-svn: 30169
2006-09-07 23:39:26 +00:00
Jim Laskey 261779bb45 Make target asm info a property of the target machine.
llvm-svn: 30162
2006-09-07 22:06:40 +00:00
Chris Lattner 721fc38342 Add new option to leave asm names alone
llvm-svn: 30149
2006-09-07 18:20:41 +00:00
Devang Patel 5561aa7271 Add getTargetTriple() that linker can use to query target architecture.
llvm-svn: 30132
2006-09-06 20:16:28 +00:00
Devang Patel ee9f617cff Keep track of all modules crated using a name to module map.
Add private member function getMoudle().

llvm-svn: 30130
2006-09-06 18:50:26 +00:00
Jim Laskey 681ecbb3b3 Separate target specifc asm properties from asm printers.
llvm-svn: 30127
2006-09-06 18:35:33 +00:00
Jim Laskey a6211dcdad Separate target specific asm properties from the asm printers.
llvm-svn: 30126
2006-09-06 18:34:40 +00:00
Devang Patel e3b9490b05 Extract target triplet from optimized module.
Untabify.

llvm-svn: 30123
2006-09-06 00:28:22 +00:00
Evan Cheng 6509c248f3 IsDef can only be accessed / set if operand is a register.
llvm-svn: 30119
2006-09-05 20:20:04 +00:00
Evan Cheng fd500a27f2 Initialize IsDef of all non-register MachineOperand to false.
llvm-svn: 30116
2006-09-05 18:56:02 +00:00
Chris Lattner af23f9b5f6 Completely eliminate def&use operands. Now a register operand is EITHER a
def operand or a use operand.

llvm-svn: 30109
2006-09-05 02:31:13 +00:00
Chris Lattner af87314781 ADd getImm/setImm methods
llvm-svn: 30105
2006-09-04 23:35:22 +00:00
Chris Lattner 22f29396db Add some short-hand accessors
llvm-svn: 30104
2006-09-04 23:05:29 +00:00
Duraid Madina cf6749e4c0 add setJumpBufSize() and setJumpBufAlignment() to target-lowering.
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example

llvm-svn: 30095
2006-09-04 06:21:35 +00:00
Chris Lattner 12e97307a1 Completely rearchitect the interface between targets and the pass manager.
This pass:

1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
things using libcodegen and other support).
2. Instead of having each target fully populate the passmgr for file or JIT
   output, move all this to common code, and give targets hooks they can
   implement.
3. Commonalize the target population stuff between file emission and JIT
   emission.
4. All (native code) codegen stuff now happens in a FunctionPassManager, which
   paves the way for "fast -O0" stuff in the CFE later, and now LLC could
   lazily stream .bc files from disk to use less memory.
5. There are now many fewer #includes and the targets don't depend on the
   scalar xforms or libanalysis anymore (but codegen does).
6. Changing common code generator pass ordering stuff no longer requires
   touching all targets.
7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
   which is now orthogonal to the fact that JIT'ing is being done.

llvm-svn: 30081
2006-09-04 04:14:57 +00:00
Chris Lattner 2f77922d30 Add explicit doInitialization/doFinalization methods instead of making
the FunctionPassManager redo this for each function.

llvm-svn: 30079
2006-09-04 04:07:39 +00:00
Chris Lattner 9183d57c37 Eliminate target name.
llvm-svn: 30071
2006-09-03 18:44:26 +00:00
Chris Lattner 8584e940b8 Avoid beating on the mi2i map when we know the answer already.
llvm-svn: 30066
2006-09-03 08:07:11 +00:00
Chris Lattner f8f724a2b1 Move two methods out of line, make them work when the record for a machine
instruction includes physregs.

llvm-svn: 30061
2006-09-03 00:05:09 +00:00
Chris Lattner 5aca72aecc Fix a typo pointed out by Gabor
llvm-svn: 30058
2006-09-02 22:27:29 +00:00
Chris Lattner bc1a280eae add a prototype
llvm-svn: 30051
2006-09-02 05:37:53 +00:00
Chris Lattner 75742e532a Iteration is required for some cases, even if they don't occur in crafty.
Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll

llvm-svn: 30050
2006-09-02 05:32:53 +00:00
Chris Lattner 7907ad8472 new method
llvm-svn: 30048
2006-09-02 05:26:01 +00:00
Chris Lattner 53ca302eb3 remove some particularly expensive assertions
llvm-svn: 30014
2006-09-01 06:57:35 +00:00
Chris Lattner 6bfccbb08b add a simple reserve method.
llvm-svn: 30011
2006-09-01 06:08:16 +00:00
Chris Lattner f765351978 Iterative coallescing doesn't buy us anything (we get identical results on
crafty with and without it).  Removing it speeds up live intervals 6%.

llvm-svn: 30010
2006-09-01 04:02:42 +00:00
Chris Lattner aa36808fd3 avoid calling the virtual isMoveInstr method endlessly by caching its results.
llvm-svn: 29994
2006-08-31 05:54:43 +00:00
Chris Lattner aea29af0bc Restore source-level compatibility with clients of these functions.
llvm-svn: 29978
2006-08-30 20:47:48 +00:00
Chris Lattner 69c32d5564 fix 80 column issue
llvm-svn: 29972
2006-08-30 05:56:52 +00:00
Chris Lattner f5bed76353 Instantiate Statistic<> in one place, not in every .o file that uses it.
llvm-svn: 29971
2006-08-30 04:17:00 +00:00
Chris Lattner 34434e97c9 Teach the coallescer to coallesce live intervals joined by an arbitrary
number of copies, potentially defining live ranges that appear to have
differing value numbers that become identical when coallsced.  Among other
things, this fixes CodeGen/X86/shift-coalesce.ll and PR687.

llvm-svn: 29968
2006-08-29 23:18:15 +00:00
Devang Patel f489d0f85c Do not rely on std::sort and std::erase to get list of unique
exit blocks. The output is dependent on addresses of basic block.

Add and use Loop::getUniqueExitBlocks.

llvm-svn: 29966
2006-08-29 22:29:16 +00:00
Evan Cheng e5570a4c3f Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make it a static method of SelectionDAG.
llvm-svn: 29951
2006-08-29 06:42:35 +00:00
Nick Lewycky b2e8ae1700 Add PredicateSimplifier pass. Collapses equal variables into one form
and simplifies expressions. This implements the optimization described
in PR807.

llvm-svn: 29947
2006-08-28 22:44:55 +00:00
Chris Lattner 86d61a5c02 Add 2nd form of resize
llvm-svn: 29945
2006-08-28 21:52:08 +00:00
Chris Lattner 16c203e7c6 remove extraneous space
llvm-svn: 29940
2006-08-28 17:30:49 +00:00
Reid Spencer 4969df88a5 Back out last revision which should not have been committed (yet).
llvm-svn: 29935
2006-08-28 01:08:45 +00:00
Reid Spencer e7141c8be6 For PR387:
Close out this long standing bug by removing the remaining overloaded
virtual functions in LLVM. The -Woverloaded-virtual option is now turned on.

llvm-svn: 29934
2006-08-28 01:02:49 +00:00
Chris Lattner 97c9f20c52 simplify AnalysisGroup registration, eliminating one typeid call.
llvm-svn: 29932
2006-08-28 00:42:29 +00:00
Chris Lattner 7aa139994f Silence -Woverloaded-virtual warnings.
llvm-svn: 29929
2006-08-28 00:09:00 +00:00
Chris Lattner c2d3d3112e eliminate RegisterOpt. It does the same thing as RegisterPass.
llvm-svn: 29925
2006-08-27 22:42:52 +00:00
Chris Lattner 3c9b2420df Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.
llvm-svn: 29921
2006-08-27 22:30:17 +00:00
Chris Lattner fbb46500cf We no longer care whether something is an opt vs analysis pass, only whether
something is a pass vs an analysis group now.  Simplify interfaces.

llvm-svn: 29920
2006-08-27 22:21:55 +00:00
Chris Lattner aac4993fdc Remove a dead class.
llvm-svn: 29918
2006-08-27 22:11:07 +00:00
Chris Lattner 3385b922de add directive to disable inlining
llvm-svn: 29912
2006-08-27 13:16:05 +00:00
Chris Lattner 3d27be1333 s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|
llvm-svn: 29911
2006-08-27 12:54:02 +00:00
Chris Lattner 3e5d60fcea Add external definitions for commonly-used template specializations and add
anchor methods to others.  This eliminates the vtable/template method bloat
in .o files that defining a cl::opt used to impose (~4K per .o file for one
cp::opt<unsigned>).

llvm-svn: 29909
2006-08-27 12:45:47 +00:00
Chris Lattner 658d088641 New place to put compiler-specific functionality. This replaces Visibility.h,
and provides macros that can be used to make explicit instantiations of
template specializations, which is a gcc-specific feature.

llvm-svn: 29908
2006-08-27 12:42:45 +00:00
Evan Cheng 849f4bf8dd Eliminate SelectNodeTo() and getTargetNode() variants which take more than
3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.

llvm-svn: 29905
2006-08-27 08:08:54 +00:00
Chris Lattner 96da8294cd make optional pointer really optional
llvm-svn: 29904
2006-08-27 07:11:54 +00:00
Nate Begeman 7851db75d9 Properly size the string table, and emit symbol table and string table
entries in the correct order, fixing several fixmes.

llvm-svn: 29902
2006-08-26 15:46:34 +00:00
Evan Cheng 34b70eea5c SelectNodeTo now returns a SDNode*.
llvm-svn: 29901
2006-08-26 08:00:10 +00:00
Chris Lattner f4f0b1995c Completely change the way that joining with physregs is implemented. This
paves the way for future changes, increases coallescing opportunities (in
theory, not witnessed in practice), and eliminates the really expensive
LiveIntervals::overlapsAliases method.

llvm-svn: 29890
2006-08-25 23:41:24 +00:00
Jim Laskey fb96c74874 Tidy up.
llvm-svn: 29888
2006-08-25 22:56:30 +00:00
Reid Spencer 50eac3b8ab For PR797:
Make the Win32 code exception free (untested/uncompiled) which forced some
interface changes which had ripple effect. This should be the last of 797.

llvm-svn: 29884
2006-08-25 21:37:17 +00:00
Reid Spencer 51e6f68b47 For PR797:
Final commit for this bug. This removes the last EH holdouts in LLVM
and turns off exception support by using the -fno-exceptions option. This
leads to the following reduction in library and executable sizes:
                DEBUG BUILD                RELEASE BUILD
         before     after   delta     before   after    delta
lib    162,328K  157,616K   4,712    17,864K  16,416K  1,448K
bin    571,444K  557,156K  14,288    63,296K   56,996K 6,300K

Debug   Improvement: 19,000K (2.59%)
Release Improvement:  7,748K (9.55%)

llvm-svn: 29882
2006-08-25 19:54:53 +00:00
Jim Laskey 92206f9404 Consolidate callee saved register information so that it can me used by debug
information and exception handling.

llvm-svn: 29881
2006-08-25 19:45:51 +00:00
Reid Spencer f25aebf8cf For PR797:
Remove exception throwing/handling from lib/Bytecode, and adjust its users
to compensate for changes in the interface.

llvm-svn: 29875
2006-08-25 17:43:11 +00:00
Nate Begeman 89fa9c7d65 Get closer to handling globals correctly. We now generally get them in the
right section.

llvm-svn: 29871
2006-08-25 06:36:58 +00:00
Reid Spencer ec0f205dc1 For PR797:
Remove exception handling from the bytecode archiver and adjust the llvm-ar
tool to accommodate the new interfaces.

llvm-svn: 29866
2006-08-24 23:45:08 +00:00
Chris Lattner bdf121060c Take advantage of the recent improvements to the liveintervals set (tracking
instructions which define each value#) to simplify and improve the coallescer.
In particular, this patch:

1. Implements iterative coallescing.
2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a
   better solution.
3. Implements PR865, "coallescing" away the second copy in code like:

   A = B
   ...
   B = A

This also includes changes to symbolically print registers in intervals
when possible.

llvm-svn: 29862
2006-08-24 22:43:55 +00:00
Reid Spencer 8e8ffce411 Remove a FIXME. Don't use strlcpy that isn't available on non-BSD platforms
and ensure that a memory overrun won't occur while still writing Length
bytes in the outstring function.

llvm-svn: 29855
2006-08-24 14:25:39 +00:00
Chris Lattner 38d838b99d update some comments
llvm-svn: 29853
2006-08-24 00:21:32 +00:00
Nate Begeman d88b6437af Correctly attribute file author & remote tabs
llvm-svn: 29852
2006-08-23 21:33:27 +00:00
Nate Begeman 3cb3921a60 Initial checkin of the Mach-O emitter. There's plenty of fixmes, but it
does emit linkable .o files in very simple cases.

llvm-svn: 29850
2006-08-23 21:08:52 +00:00
Reid Spencer e4ca722199 For PR797:
Final removal of exceptions from lib/System and adjustment of users to
accommodate.

llvm-svn: 29846
2006-08-23 20:34:57 +00:00
Reid Spencer 543cc0a2bc Fix constructor documentation.
llvm-svn: 29845
2006-08-23 17:43:20 +00:00
Reid Spencer 879ed5ab9c For PR797:
Eliminate exception throwing from Path::renamePathOnDisk and adjust its
users correspondingly.

llvm-svn: 29843
2006-08-23 07:30:48 +00:00
Reid Spencer 51edba15c6 For PR797:
Remove exception throwing from Path::getDirectoryContents and its users.

llvm-svn: 29841
2006-08-23 06:56:27 +00:00
Reid Spencer 8db844241b For PR797:
Remove exceptions from the Path::create*OnDisk methods. Update their users
to handle error messages via arguments and result codes.

llvm-svn: 29840
2006-08-23 00:39:35 +00:00
Reid Spencer 9d2f19c7e4 For PR797:
Change the Path::make*OnDisk methods exception free and adjust their usage.

llvm-svn: 29836
2006-08-22 23:27:23 +00:00
Reid Spencer 6ba87bbfd3 Make the sys::Path::GetTemporaryDirectory method not throw exceptions and
adjust users of it to compensate.

llvm-svn: 29831
2006-08-22 19:01:30 +00:00
Chris Lattner 2e9f1bc056 Improve the LiveInterval class to keep track of which machine instruction
defines each value# tracked by the interval.  This will be used to improve
coallescing.

llvm-svn: 29830
2006-08-22 18:19:46 +00:00
Reid Spencer bcf307a049 Fix some indentation.
llvm-svn: 29825
2006-08-22 17:38:05 +00:00
Chris Lattner bd2a8b6d71 add resize, move swap out of line
llvm-svn: 29823
2006-08-22 17:28:57 +00:00
Reid Spencer efdc3a13cd For PR797:
Adjust users of MappedFile to its new non-throwing interface.  Note that in
most cases the lazy step of just throwing after a call to MappedFile was
installed. This was done in the name of incremental changes. Getting rid of
the new throw statements will take adjustment of interfaces and propagation
of errors to higher levels.  Those changes will come in subsequent patches.

llvm-svn: 29817
2006-08-22 16:06:27 +00:00
Reid Spencer df1297dd3a For PR797:
Make MappedFile not throw any exceptions.

llvm-svn: 29816
2006-08-22 16:04:22 +00:00
Chris Lattner 6403d8f1ef Switch to using smallvector for liveintervals. This speeds up live interval
analysis 11% on kc++.

llvm-svn: 29812
2006-08-22 06:32:56 +00:00
Chris Lattner 1a0d996081 add a bunch more operations, including swap, insert, erase, front(), and
bugfixes for operator=.

llvm-svn: 29811
2006-08-22 06:27:16 +00:00
Chris Lattner 672b0e2a3b move LiveInterval state all together
llvm-svn: 29806
2006-08-21 23:15:12 +00:00
Jim Laskey 5c51c2b4ab Adding new Dwarf constants.
llvm-svn: 29798
2006-08-21 21:18:10 +00:00
Reid Spencer d9fec63d6a For PR797:
Change interface for error recovery without exceptions.

llvm-svn: 29789
2006-08-21 06:00:58 +00:00
Reid Spencer 89b93d8a25 Fix the documentation for this file.
llvm-svn: 29788
2006-08-21 05:37:03 +00:00
Reid Spencer a322366501 For PR885:
Consolidate the LinkAllAnalyses.h and LinkAllPasses.h headers into one
so there is no dupliation.

llvm-svn: 29787
2006-08-21 05:34:03 +00:00
Reid Spencer c295914b7a For PR797:
Make sys::Program::ExecuteAndWait not throw exceptions and update any
affected code. It now return -9999 to signal that the program couldn't be
executed. Only one case (in bugpoint) actually examines the result code.

llvm-svn: 29785
2006-08-21 02:04:43 +00:00
Chris Lattner 7b00dc885d vpkuwus didn't work, due to this typo
llvm-svn: 29776
2006-08-18 19:25:35 +00:00
Reid Spencer 713eedc1fb For PR797:
Rid the Assembly Parser of exceptions. This is a really gross hack but it
will do until the Assembly Parser is re-written as a recursive descent.
The basic premise is that wherever the old "ThrowException" function was
called (new name: GenerateError) we set a flag (TriggerError). Every
production checks that flag and calls YYERROR if it is set. Additionally,
each call to ThrowException in the grammar is replaced with GEN_ERROR
which calls GenerateError and then YYERROR immediately. This prevents
the remaining production from continuing after an error condition.

llvm-svn: 29763
2006-08-18 08:43:06 +00:00
Chris Lattner 60f1eecd3a Constify some methods. Patch provided by Anton Vayvod, thanks!
llvm-svn: 29756
2006-08-17 22:00:08 +00:00
Chris Lattner d86418ab20 switch the SUnit pred/succ sets from being std::sets to being smallvectors.
This reduces selectiondag time on kc++ from 5.43s to 4.98s (9%).  More
significantly, this speeds up the default ppc scheduler from ~1571ms to 1063ms,
a 33% speedup.

llvm-svn: 29743
2006-08-17 00:09:56 +00:00
Chris Lattner 95b8602425 add an accessor
llvm-svn: 29739
2006-08-16 22:57:08 +00:00
Chris Lattner 941015e192 Convert vector to smallvector: 4% speedup.
llvm-svn: 29735
2006-08-16 22:12:48 +00:00
Chris Lattner 3db0987ed6 silence a warning.
llvm-svn: 29734
2006-08-16 22:09:24 +00:00
Chris Lattner 29787976df Change the use_list to be a smallvector instead of a vector. This reduces
isel time from 6.79s to 5.53s (22%) on kc++ with a release build on ppc.
Go smallvector! :)

llvm-svn: 29731
2006-08-16 21:01:10 +00:00
Chris Lattner a9a2b144b9 add a way to have multiple modules in a JIT :)
llvm-svn: 29723
2006-08-16 02:53:27 +00:00
Chris Lattner 0621caef44 initial changes to support JIT'ing from multiple module providers, implicitly
linking the program on the fly.

llvm-svn: 29721
2006-08-16 01:24:12 +00:00
Chris Lattner 9ed9ddeae4 Bugfixes for smallvector when the element size is small and N is small.
llvm-svn: 29720
2006-08-16 01:23:31 +00:00
Chris Lattner a5a3eafbd0 Start using SDVTList more consistently
llvm-svn: 29711
2006-08-15 19:11:05 +00:00
Chris Lattner f98411a220 add a new SDVTList type and new SelectionDAG::getVTList methods to streamline
the creation of canonical VTLists.

llvm-svn: 29709
2006-08-15 17:46:01 +00:00
Chris Lattner 99908dc720 Make getNodeValueTypes methods public.
llvm-svn: 29688
2006-08-14 23:54:24 +00:00
Chris Lattner 3bf4be453f Add a new getNode() method that takes a pointer to an already-intern'd list
of value-type nodes.  This avoids having to do mallocs for std::vectors of
valuetypes when a node returns more than one type.

llvm-svn: 29685
2006-08-14 23:31:51 +00:00
Devang Patel b23eff64f1 Avoid extra string copy.
llvm-svn: 29684
2006-08-14 23:27:36 +00:00
Devang Patel 4500688cc7 Use mangler, instead of addUnderscore(), to get mangled name.
Now, LLVMSymbol keeps symbol original name and mangled name.

llvm-svn: 29679
2006-08-14 22:36:16 +00:00
Chris Lattner e93a39f2d7 remove SelectionDAG::InsertISelMapEntry, it is dead
llvm-svn: 29677
2006-08-14 22:24:39 +00:00
Chris Lattner 63268f0672 Add code to resize the CSEMap hash table. This doesn't speedup codegen of
kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)

llvm-svn: 29675
2006-08-14 22:19:25 +00:00
Chris Lattner fdb296850c avoid a warning
llvm-svn: 29674
2006-08-14 21:47:50 +00:00
Nate Begeman 984c1a4a8f Emit .set directives for jump table entries when possible, which reduces
the number of relocations in object files, shrinkifying them.

llvm-svn: 29650
2006-08-12 21:29:52 +00:00
Chris Lattner 9fd1027b4c Track # nodes in a CSEMap.
llvm-svn: 29643
2006-08-12 01:07:51 +00:00
Chris Lattner 04aa034f38 Switch NodeID to track 32-bit chunks instead of 8-bit chunks, for a 2.5%
speedup in isel time.

llvm-svn: 29640
2006-08-11 23:55:53 +00:00
Chris Lattner 5425637481 remove IncludeFile turds in MathExtras.h, which bloats every .o file that
#includes it.

llvm-svn: 29639
2006-08-11 23:52:54 +00:00
Chris Lattner ab786e77c6 move code out of line so that GCC doesn't inline it at -O3
llvm-svn: 29636
2006-08-11 23:40:23 +00:00
Chris Lattner 19172c90f1 Split SmallVector into SmallVector and SmallVectorImpl, which allows us to
eliminate code duplication due to the 'N' parameter.

llvm-svn: 29634
2006-08-11 23:19:51 +00:00
Chris Lattner 0c2e5412bb Remove 8 more std::map's.
llvm-svn: 29631
2006-08-11 21:55:30 +00:00
Chris Lattner 797ee571ae remove old piece of the V9 backend.
llvm-svn: 29628
2006-08-11 21:11:35 +00:00
Chris Lattner 2006a2ebab Start moving leaf nodes over to the CSEMap.
llvm-svn: 29625
2006-08-11 21:00:46 +00:00
Chris Lattner 7d807827a9 new method for adding ints
llvm-svn: 29622
2006-08-11 18:53:44 +00:00
Chris Lattner fcb16470ec eliminate the NullaryOps map, use CSEMap instead.
llvm-svn: 29621
2006-08-11 18:38:11 +00:00
Chris Lattner 1727253e03 Change one ReplaceAllUsesWith method to take an array of operands to replaceinstead of a vector of operands.
llvm-svn: 29617
2006-08-11 17:46:44 +00:00
Chris Lattner 693e52ea22 Remove now-dead method.
llvm-svn: 29615
2006-08-11 17:40:26 +00:00
Chris Lattner f16aa58547 remove a (now) unused getNode method.
llvm-svn: 29613
2006-08-11 17:25:05 +00:00
Chris Lattner 0d29b30238 Doxygenify some methods.
llvm-svn: 29592
2006-08-10 06:00:40 +00:00
Chris Lattner c24a1d3093 Start eliminating temporary vectors used to create DAG nodes. Instead, pass
in the start of an array and a count of operands where applicable.  In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap.  In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.

I updated a lot of code calling getNode that takes a vector, but ran out of
time.  The rest of the code should be updated, and these methods should be
removed.

We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.

It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.

llvm-svn: 29566
2006-08-08 02:23:42 +00:00
Chris Lattner a2c1bfa6af capacity is a pointer, not a value
llvm-svn: 29564
2006-08-08 01:54:17 +00:00
Chris Lattner e2af30a922 add a new assign method
llvm-svn: 29562
2006-08-08 01:44:16 +00:00
Chris Lattner 97af9d5d3a Eliminate some malloc traffic by allocating vectors on the stack. Change some
method that took std::vector<SDOperand> to take a pointer to a first operand
and #operands.

This speeds up isel on kc++ by about 3%.

llvm-svn: 29561
2006-08-08 01:09:31 +00:00
Chris Lattner 7c673c322c Add ctor that initializes from a range.
llvm-svn: 29560
2006-08-08 00:37:50 +00:00
Chris Lattner 3c36b702f4 Remove assertions from the SmallVector class. They slow down clients of
smallvector too much in a release build.  Removing them speeds up isel 4%.

llvm-svn: 29556
2006-08-07 23:41:59 +00:00
Chris Lattner b5bfd69172 New CSEMap datastructure impl
llvm-svn: 29555
2006-08-07 23:31:24 +00:00
Reid Spencer 47b1ed7276 Remove the use of "IncludeFile" from this support facility. The mechanism
to build a loadable module is now correctly defined and documented so this
workaround isn't needed any longer.

llvm-svn: 29553
2006-08-07 23:20:15 +00:00
Chris Lattner 1ee75ce65d Revamp the "CSEMap" datastructure used in the SelectionDAG class. This
eliminates a bunch of std::map's in the SelectionDAG, replacing them with a
home-grown hashtable.

This is still a work in progress: not all the maps have been moved over and the
hashtable never resizes.  That said, this still speeds up llc 20% on kimwitu++
with -fast -regalloc=local using a release build.

llvm-svn: 29550
2006-08-07 23:03:03 +00:00
Evan Cheng f3bda31296 Move DAGSize to SelectionDAGISel; it's used in tablegen'd isel code.
llvm-svn: 29547
2006-08-07 22:16:08 +00:00
Chris Lattner 751c8f1832 Add a clear method to SmallVector
llvm-svn: 29542
2006-08-07 05:45:34 +00:00
Chris Lattner de48f1ba0a Silence a warning on x86-64, reported by chandlerc.
llvm-svn: 29535
2006-08-06 18:12:50 +00:00
Evan Cheng 927f95b5cf This causes some random crashes.
llvm-svn: 29534
2006-08-05 17:31:00 +00:00
Reid Spencer 0b52e2f433 Update the auto* tools: autoconf 2.60, libtool 1.5.22, automake 1.9.6.
Update ltld.[ch] to version 1.5.22.
Correct the notes about updating these tools (autoconf/README.TXT)
Add configure options for getting the correct option for including a whole
archive when linking.

llvm-svn: 29529
2006-08-04 18:18:08 +00:00
Chris Lattner 8927c875bb Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, which
also make it simpler.

llvm-svn: 29524
2006-08-04 17:45:20 +00:00
Chris Lattner 0655fcaf8c update comment
llvm-svn: 29507
2006-08-03 18:57:28 +00:00
Chris Lattner fef2c5f0a2 remove some more dead sparcv9 support stuff
llvm-svn: 29506
2006-08-03 18:55:44 +00:00
Devang Patel 95967ad798 Fix typo.
llvm-svn: 29497
2006-08-03 16:34:35 +00:00
Devang Patel 36839b8637 Add new tool, lto, to do link time optimization. This tool installs
dynamic library that linker can use to optimize llvm byte codes at
link time.

llvm-svn: 29494
2006-08-03 15:44:57 +00:00
Evan Cheng cdd79f2b94 AssignTopologicalOrder now returns the vector of SDNode* by reference to
avoid the expensive operation of copying a vector.
It also returns a maximum id by value.

llvm-svn: 29478
2006-08-02 21:58:44 +00:00
Jim Laskey 29e635d3c9 Final polish on machine pass registries.
llvm-svn: 29471
2006-08-02 12:30:23 +00:00
Jim Laskey 8ab788fffd Breaking out specialized classes.
llvm-svn: 29470
2006-08-02 12:27:50 +00:00
Chris Lattner 38e1a09d4d Add dominates/properlyDominates queries to IDom.
llvm-svn: 29456
2006-08-01 22:24:47 +00:00
Jim Laskey 17c67efe8a Now that the ISel is available, it's possible to create a default instruction
scheduler creator.

llvm-svn: 29452
2006-08-01 19:14:14 +00:00
Jim Laskey 03593f72db 1. Change use of "Cache" to "Default".
2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.

More to follow.

llvm-svn: 29450
2006-08-01 18:29:48 +00:00
Chris Lattner 7dbd783e90 Remove some now-dead methods. Use getFileStatus instead.
llvm-svn: 29447
2006-08-01 18:16:02 +00:00
Jim Laskey 0ec39ee28e Forgot the added files for plugable machine passes.
llvm-svn: 29436
2006-08-01 16:31:08 +00:00
Jim Laskey 95eda5b1f3 Introducing plugable register allocators and instruction schedulers.
llvm-svn: 29434
2006-08-01 14:21:23 +00:00
Evan Cheng 9631a60020 Added AssignTopologicalOrder() to assign each node an unique id based on their topological order.
llvm-svn: 29431
2006-08-01 08:20:41 +00:00
Chris Lattner 60c5064538 Modify setStatusInfoOnDisk to not throw an exception.
llvm-svn: 29402
2006-07-28 22:36:17 +00:00
Chris Lattner 3cec109967 Modify Path::eraseFromDisk to not throw an exception.
llvm-svn: 29400
2006-07-28 22:29:50 +00:00
Chris Lattner 6496902d6f Update comments.
llvm-svn: 29398
2006-07-28 22:09:37 +00:00
Chris Lattner 4857253d98 Change Path::getStatusInfo to return a boolean and error string on an error
instead of throwing an exception.  This reduces the amount of code that is
exposed to exceptions (e.g. FileUtilities), though it is clearly only one step
along the way.

llvm-svn: 29395
2006-07-28 22:03:44 +00:00
Chris Lattner ddc61724b3 The smallvector dtor should destroy the elements.
Implement pop_back.
Chage some code to use 'iterator' instead of T*.  This unbreaks operators=.

llvm-svn: 29380
2006-07-28 05:03:42 +00:00
Evan Cheng e2a3f7014d Rename IsFoldableBy to CanBeFoldedleBy
llvm-svn: 29376
2006-07-28 01:03:48 +00:00
Evan Cheng b572401bea Remove InFlightSet hack. No longer needed.
llvm-svn: 29373
2006-07-28 00:47:19 +00:00
Jim Laskey d1a714e503 Working toward registration of register allocators.
llvm-svn: 29360
2006-07-27 20:05:00 +00:00
Evan Cheng 78bf1074fc Resolve BB references with relocation.
llvm-svn: 29351
2006-07-27 18:21:10 +00:00
Evan Cheng 7d899e61c6 Add basic block machine relocation.
llvm-svn: 29349
2006-07-27 18:18:13 +00:00
Evan Cheng acb606ff33 AssignNodeIds should return unsigned.
llvm-svn: 29343
2006-07-27 07:36:47 +00:00
Evan Cheng ad4b9f58f5 Remove NodeDepth; Add NodeId which is a unique id per node per DAG. It can only be set by SelectionDAG.
llvm-svn: 29336
2006-07-27 06:38:21 +00:00
Evan Cheng 061aba35c1 Let each target specific isel provide routine to check if a chain producing node is foldable by another.
llvm-svn: 29335
2006-07-27 06:36:49 +00:00
Evan Cheng 93386e02fe Move synchronizeICache from TargetJITInfo into a static function in JITEmitter.cpp
llvm-svn: 29334
2006-07-27 06:33:55 +00:00
Chris Lattner 4da479b02b Use std::copy instead of custom loops to take advantage of STL optimizations.
Add a new append method for appending a range.

llvm-svn: 29323
2006-07-27 03:38:08 +00:00
Nate Begeman 787565024a Support jump tables when in PIC relocation model
llvm-svn: 29318
2006-07-27 01:13:04 +00:00
Chris Lattner 9e56e5c003 Rename RelocModel::PIC to PIC_, to avoid conflicts with -DPIC.
llvm-svn: 29307
2006-07-26 21:12:04 +00:00
Reid Spencer 082e2a7821 For PR780:
Put the rest of lib/System into LinkAllVMCore.h. This makes all of
lib/System available to programs that #include LinkALlVMCore.h so that
loadable modules linked into those programs can depend on all of lib/System
being available.

llvm-svn: 29288
2006-07-26 16:55:39 +00:00
Reid Spencer 421475cd3b For PR780:
1. Move IncludeFile.h to System library
2. Move IncludeFile.cpp to System library
3. #1 and #2 required to prevent cyclic library dependencies for libSystem
4. Convert all existing uses of Support/IncludeFile.h to System/IncludeFile.h
5. Add IncludeFile support to various lib/System classes.
6. Add new lib/System classes to LinkAllVMCore.h
All this in an attempt to pull in lib/System to what's required for VMCore

llvm-svn: 29287
2006-07-26 16:18:00 +00:00
Chris Lattner f567a263c6 Add a new llvm::SmallVector template, which is similar to the vector class, but
contains optimizations to avoid heap allocation if the vector size is smaller
than some threshold.  This can significantly improve the performance of code
that allocates many small vectors by eliminating tons of small malloc/free's.

llvm-svn: 29281
2006-07-26 06:22:30 +00:00
Jim Laskey 4700b1534e Moving this function to a permanent home to prevent a dependency cycle created
by the inline heuristic.  Was preventing llvm-gcc4 from building.

llvm-svn: 29278
2006-07-25 23:22:00 +00:00
Evan Cheng f6acb34d23 - Refactor the code that resolve basic block references to a TargetJITInfo
method.
- Added synchronizeICache() to TargetJITInfo. It is called after each block
  of code is emitted to flush the icache. This ensures correct execution
  on targets that have separate dcache and icache.
- Added PPC / Mac OS X specific code to do icache flushing.

llvm-svn: 29276
2006-07-25 20:40:54 +00:00
Jim Laskey 4e153f1b91 Use an enumeration to eliminate data relocations.
llvm-svn: 29249
2006-07-21 20:57:35 +00:00
Devang Patel 839d9260f0 Add new constructor to accept vector of exported names while creating
InternalizePass.

llvm-svn: 29222
2006-07-20 17:48:05 +00:00
Evan Cheng 2884b5cc93 Make sub- and super- register classes const.
llvm-svn: 29200
2006-07-19 05:58:18 +00:00
Chris Lattner 4238ca55ef Move MVT::getVectorType out of line, it is large and shouldn't be inlined.
llvm-svn: 29195
2006-07-19 00:40:45 +00:00
Chris Lattner c0973edc69 Add an out-of-line virtual method for the sdnode class to give it a home.
llvm-svn: 29192
2006-07-19 00:00:37 +00:00
Chris Lattner a0ddced752 Add an out-of-line virtual method to provide a home for the cl::option class.
llvm-svn: 29191
2006-07-18 23:59:33 +00:00
Chris Lattner 9d4ff4407e Add functions to compute ceil(log2(N)) to match functions for floor(log2(N))
llvm-svn: 29168
2006-07-18 00:47:10 +00:00
Chris Lattner 436c2dd927 Add an out-of-line virtual function to home class.
llvm-svn: 29154
2006-07-14 23:08:47 +00:00
Chris Lattner 81e6cc0999 Add two helper functions
llvm-svn: 29150
2006-07-14 22:54:06 +00:00
Chris Lattner d9a2c2a5e7 Add another helper method.
llvm-svn: 29147
2006-07-14 22:19:18 +00:00
Chris Lattner 7a196b73c2 Add a new method for bugpoint to use.
llvm-svn: 29142
2006-07-14 19:37:01 +00:00
Chris Lattner 5de3b8b262 Change the callgraph representation to store the callsite along with the
target CG node.  This allows the inliner to properly update the callgraph
when using the pruning inliner.  The pruning inliner may not copy over all
call sites from a callee to a caller, so the edges corresponding to those
call sites should not be copied over either.

This fixes PR827 and Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll

llvm-svn: 29120
2006-07-12 18:29:36 +00:00
Jim Laskey 6c72aa7411 1. Support for c++ mangled names.
2. Support for private/protected class members.

llvm-svn: 29104
2006-07-11 15:58:09 +00:00
Reid Spencer 546436c482 Finish removal of EH usage from the Archive library. The REQUIRES_EH flag
in lib/Bytecode/Archive/Makefile is now removed. One small step closer to
a smaller LLVM.

llvm-svn: 29067
2006-07-07 20:56:50 +00:00
Reid Spencer cfa807ab31 Remove EH use from the Archive library and adjust its users accordingly.
llvm-svn: 29066
2006-07-07 19:09:14 +00:00
Chris Lattner c4f7bfa081 #include <iosfwd> not <ostream>
llvm-svn: 29061
2006-07-07 18:10:59 +00:00
Chris Lattner 5a9d2e5a0a Change AllocateRWX/DeallocateRWX to not throw an exception.
llvm-svn: 29058
2006-07-07 17:32:37 +00:00
Chris Lattner 8c8858a6c4 Change LoadLibraryPermanently to not throw an exception.
llvm-svn: 29048
2006-07-07 17:12:36 +00:00
Chris Lattner 4f1b929022 This patch (written by Reid) changes compressor to never throw an exception.
llvm-svn: 29045
2006-07-07 17:00:12 +00:00
Chris Lattner 8dbf28e59e Fix an embarassing bug reid noticed
llvm-svn: 29031
2006-07-07 00:01:01 +00:00
Chris Lattner 5418b0f39e Modify the SlowOperationInformer interface to not throw exceptions.
llvm-svn: 29028
2006-07-06 22:34:06 +00:00
Chris Lattner 3d40daa474 Change the ModuleProvider interface to not throw exceptions.
llvm-svn: 29024
2006-07-06 21:35:01 +00:00
Chris Lattner 6cf27be54d Change the verifier to never throw an exception. Instead verifyModule can
optionally return the string error, which is an easier api for clients to
use anyway.

llvm-svn: 29016
2006-07-06 18:00:01 +00:00
Evan Cheng 0441746468 Added option -code-model to set code model (only used in 64-bit) mode. Valid
values include small, kernel, medium, large, and default.

llvm-svn: 29009
2006-07-06 01:53:36 +00:00
Evan Cheng d19938834b Ugly hack! Add helper functions InsertInFlightSetEntry and
RemoveInFlightSetEntry. They are used in place of direct set operators to
reduce instruction selection function stack size.

llvm-svn: 28987
2006-06-29 23:57:05 +00:00
Evan Cheng ec1d60bd98 Add support to print 4-, 8-, and 16- byte constant literals in special
sections. e.g. On Darwin that would be .literal4 and .literal8.

llvm-svn: 28977
2006-06-29 00:26:09 +00:00
Chris Lattner 9fbcf35407 Add support for hidden visibility
llvm-svn: 28968
2006-06-28 21:38:04 +00:00
Evan Cheng 307b9c93cf Allow EmitConstantPool to be redefined by derived classes.
llvm-svn: 28952
2006-06-28 00:52:32 +00:00
Reid Spencer ee7eaa25cf For PR801:
Refactor the Graph writing code to use a common implementation which is
now in lib/Support/GraphWriter.cpp. This completes the PR.

Patch by Anton Korobeynikov. Thanks, Anton!

llvm-svn: 28925
2006-06-27 16:49:46 +00:00
Chris Lattner b06021a0f7 Add a new method.
llvm-svn: 28915
2006-06-26 19:20:25 +00:00
Jim Laskey a7b2bd5997 Add and sort "sections" in debug lines. This always stepping through
code in sections other than ".text", including weak sections like ctors and
dtors.

llvm-svn: 28909
2006-06-23 12:51:53 +00:00
Evan Cheng 6a34939af6 Added jump table address relocation.
llvm-svn: 28908
2006-06-23 01:02:37 +00:00
Reid Spencer bb6e26492e Whoops, missed a couple more C-style casts.
llvm-svn: 28905
2006-06-21 22:19:00 +00:00
Reid Spencer 81a0d25811 Use C++ style casts instead of C-style casts to shut up compiler warnings
when compiling with -pedantic. Passes regression tests on Linux.

llvm-svn: 28904
2006-06-21 21:54:54 +00:00
Chris Lattner 1c12a881fb Add some out-of-line virtual dtors so that the class has a "home", preventing
vtables for (e.g.) Instruction from being emitted into every .o file.

llvm-svn: 28898
2006-06-21 16:53:47 +00:00
Evan Cheng cb8cc7bdef Fix non-64-bit clean code.
llvm-svn: 28891
2006-06-21 00:29:14 +00:00
Andrew Lenharth 5fec2abe9b Fix build on old compilers
llvm-svn: 28869
2006-06-20 15:32:17 +00:00
Andrew Lenharth a565dfda8e Do partial inlining in BU. This resolves more call sites. Also add options to merge in globals during recursion and to back annotate DSNodes when function pointers are resolved. This makes PA work for a whole lot more things (unresolved call sites being what has been killing various DSA based passes)
llvm-svn: 28859
2006-06-19 18:23:36 +00:00
Evan Cheng 0c9be0a2be Clean up
llvm-svn: 28851
2006-06-17 01:42:20 +00:00
Chris Lattner e16e1cbf3a Simplify the targetdata ctor by not passing in a "targetname" which is always
ignored.

llvm-svn: 28829
2006-06-16 18:21:53 +00:00
Chris Lattner 7f043b52ff Remove ctor with each piece specifyable (which causes overload ambiguities),
add a new init method.

llvm-svn: 28828
2006-06-16 18:11:26 +00:00
Andrew Lenharth fbee2e56cf move header
llvm-svn: 28818
2006-06-16 14:33:53 +00:00
Jim Laskey b2ff2d481e 1. Revise vector debug support.
2. Update docs for vector debug support and new version control.

3. Simplify serialization of DebugDescInfo subclasses.

llvm-svn: 28816
2006-06-16 13:14:03 +00:00
Jim Laskey 19f964e048 1. Support standard dwarf format (was bootstrapping in Apple format.)
2. Add vector support.

llvm-svn: 28807
2006-06-15 20:51:43 +00:00
Chris Lattner 9d343d2799 Add some more matcher classes for shifts.
llvm-svn: 28804
2006-06-15 19:25:28 +00:00
Evan Cheng 1dfdffb9b2 Avoid undesirable behavior when assert is not enabled.
llvm-svn: 28793
2006-06-15 08:10:27 +00:00
Evan Cheng 55772ccfd6 Instructions with variable operands (variable_ops) can have a number required
operands. e.g.
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst, variable_ops),
                "call {*}$dst", [(X86call GR32:$dst)]>;
TableGen should emit operand informations for the "required" operands.

Added a target instruction info flag M_VARIABLE_OPS to indicate the target
instruction may have more operands in addition to the minimum required
operands.

llvm-svn: 28791
2006-06-15 07:22:16 +00:00
Jim Laskey f0a7a1a117 Change versioning to per debug info descriptor (merged with tag.)
llvm-svn: 28782
2006-06-14 14:45:39 +00:00
Jim Laskey f67bec0579 Place dwarf headers at earliest possible point. Well behaved when skipping
functions.

llvm-svn: 28781
2006-06-14 11:35:03 +00:00
Andrew Lenharth 0e57b2cb92 Start on my todo list
llvm-svn: 28752
2006-06-12 16:07:18 +00:00
Owen Anderson b538f14d2a Re-commit the safe parts of my 6/9 patch. Still working on fixing the unsafe parts.
llvm-svn: 28748
2006-06-11 19:22:28 +00:00
Evan Cheng 1b6e310e6f Back out Owen's 6/9 changes. They broke MultiSource/Benchmarks/Prolangs-C/bison (and perhaps others).
llvm-svn: 28747
2006-06-11 09:32:57 +00:00
Owen Anderson 505adff3f0 Make Loop able to verify that it is in LCSSA-form, and have the LCSSA pass assert
on this.

llvm-svn: 28738
2006-06-09 18:33:30 +00:00
Owen Anderson 5d029264ec Update some comments, and expose LCSSAID in preparation for having other passes
require LCSSA.

llvm-svn: 28734
2006-06-08 20:02:53 +00:00
Reid Spencer 5e91c03fa9 For PR804:
Change the file size field of StatusInfo to be uint64_t instead of size_t
so that we know it is always 64 bits. This prevents some overflow on
systems where size_t is 32 bits when it ought to be 64.

llvm-svn: 28726
2006-06-08 17:00:08 +00:00
Vladimir Prus b5b6dc49e2 New method BasicBlock::getFirstNonPHI.
llvm-svn: 28724
2006-06-08 15:46:18 +00:00
Reid Spencer ab97f22ccc For PR787:
Provide new llvm::sys::Program facilities for converting the stdout and
stdin to binary mode. There is no standard way to do this and the available
mechanisms are platform specific. Adjust the bytecode reader and writer to
use these methods when their input is stdin or output is stdout. THis avoids
the problem with \n writing CRLF to a bytecode file on windows.

Patch Contributed by Michael Smith.

llvm-svn: 28722
2006-06-07 23:18:34 +00:00
Reid Spencer 5113dc5cfe For PR780:
1. Add #includes to LinkAllVMCore.h to get Mangler.o and InlineAsm.o
2. Make Mangler.h and InlineAsm.h use the macros to ensure linkage
3. Make each of the tools with --load options include LinkAllVMCore.h
This should be the last set of changes for this bug and 800.

llvm-svn: 28719
2006-06-07 23:03:13 +00:00
Chris Lattner 5bd30fa310 Add a virtual dtor to the InlineAsm class so that the principle method of
the class can be defined in InlineAsm.cpp

llvm-svn: 28718
2006-06-07 22:47:44 +00:00
Reid Spencer fa80953280 Previous version of this file wasn't supposed to be committed. This version
attempts to get all of libVMCore.a through the least number of declarations.

llvm-svn: 28716
2006-06-07 22:09:38 +00:00
Reid Spencer be535661cc For PR780:
1. Fix the macros in IncludeFile.h to put everything in the llvm namespace
2. Replace the previous explicit mechanism in all the .h and .cpp files
   with the macros in IncludeFile.h
This gets us a consistent mechanism throughout LLVM for ensuring linkage.
Next step is to make sure its used in enough places.

llvm-svn: 28715
2006-06-07 22:00:26 +00:00
Reid Spencer 1707fcb7db For PR780:
This change was suggested by Chris so that we can select an alternate
(or even no-op) implementation of the link assurance. I'm committing this
for your review, Chris. If the names and definitions are okay, I'll adjust
all the .h and .cpp files in a later patch.

llvm-svn: 28712
2006-06-07 20:35:46 +00:00
Reid Spencer 54cb2d8533 For PR780:
Break the "IncludeFile" mechanism into its own header file and adjust other
files accordingly. Use this facility for the IntrinsicInst problem which
was the subject of PR800.
More to follow on this.

llvm-svn: 28709
2006-06-07 20:00:19 +00:00
Chris Lattner d63b1b5a1f Move toolrunner out of libsupport into the bugpoint tool
llvm-svn: 28700
2006-06-06 22:31:36 +00:00
Chris Lattner c8587d4b81 Add PowerPC intrinsics to support dcbz[l]
llvm-svn: 28696
2006-06-06 21:29:23 +00:00
Reid Spencer c3065b7d3f Add the -Xlinker option to bugpoint which allows an option to be passed
through to gcc when its being used as a linker. This allows -L and -l
(and any other) options to be added so that non-complete bytecode files
can be processed with bugpoint. The -Xlinker option can be added as many
times as needed.

llvm-svn: 28692
2006-06-06 00:00:42 +00:00
Reid Spencer 9017064cc7 For PR778:
Move file-scoped documentation to class-scoped so it is more readily
accessible.

llvm-svn: 28689
2006-06-05 16:29:06 +00:00
Reid Spencer b3171678ee Make it possible to override the standard version printer. Not all tools
built with CommandLine.h will want the --version option to report that the
tool belongs to LLVM. To override simply pass a void func() to the
cl::SetVersionPrinter() function and that void func() will be called when
it is time to print the version information.

llvm-svn: 28687
2006-06-05 16:22:56 +00:00
Reid Spencer a31ac4eae9 For PR633:
Add configure checks for setjmp/longjmp for Chris. I can't believe this easy
PR has been outstanding for so long. If I don't get to something, please
remind me! :)

llvm-svn: 28686
2006-06-05 16:11:07 +00:00
Reid Spencer 627023a491 Some enhancements for gv/graphviz/dot/dotty support and better handling of
paths under MingW.

llvm-svn: 28685
2006-06-05 15:54:38 +00:00
Reid Spencer 432b315843 For PR798:
Have configure find the "dotty" program and adjust configuration.

llvm-svn: 28674
2006-06-02 23:13:18 +00:00
Chris Lattner 02e0b4ddb7 Force anything that #includes llvm/Transforms/Utils/UnifyFunctionExitNodes.h
to link in the implementation.  Thanks to Anton Korobeynikov for figuring out
what was going on here.

llvm-svn: 28660
2006-06-02 18:40:06 +00:00
Reid Spencer 54e7880bf0 Remove some flags backed out from earlier attempts at getting MING32W
configuration settled down.

llvm-svn: 28651
2006-06-02 00:40:35 +00:00
Chris Lattner 20a4da4dfd Fix -pedantic warning
llvm-svn: 28634
2006-06-01 17:17:46 +00:00
Reid Spencer a16b986df5 Provide support for detecting if the Win32 imaghlp and psapi libraries
are available. These libraries are used in lib/System and should be
included on the link line or if not available generate an error when
building lib/System.

llvm-svn: 28628
2006-06-01 16:55:59 +00:00
Reid Spencer f69d4c8f3b Favor C++ casts over C casts in C++ code.
llvm-svn: 28622
2006-06-01 07:03:53 +00:00
Reid Spencer 5861659a1e Change from using a stub function to a stub variable for passing to the
IncludeFile hack to ensure linkage of analysis passes. This works around
some -pedantic warnings about assigning an object to a function.

llvm-svn: 28621
2006-06-01 07:02:51 +00:00
Chris Lattner 9b32cf59e0 Fix utostr once and for all, by making there only be one function named
utostr.  To keep the efficiency in the 32-bit case, make it check to see if
the value is 32-bits and if so switch over to the faster 32-bit case.

llvm-svn: 28601
2006-05-31 21:25:50 +00:00
Andrew Lenharth 440dcd03fa 4 billion names is enough for anyone. And really fix the build on alpha this time
llvm-svn: 28598
2006-05-31 20:40:36 +00:00
Andrew Lenharth 0d4c10eae6 Fix build breakage on alpha, without causing it on x86. as a bonus, all platforms can invent the same number of unique names now
llvm-svn: 28596
2006-05-31 20:18:28 +00:00
Andrew Lenharth 40d4af63f2 revert for now
llvm-svn: 28595
2006-05-31 19:16:26 +00:00
Andrew Lenharth 26baab1593 make 64-bit safe and fix the build on alpha
llvm-svn: 28593
2006-05-31 18:56:42 +00:00
Reid Spencer 9fef163d19 Make the getNamedFunction and getNamedGlobal methods be const. They don't
change the module in any way and we should enforce that.

llvm-svn: 28588
2006-05-31 16:40:28 +00:00
Vladimir Prus 735e3f76a8 Clarify type naming.
llvm-svn: 28587
2006-05-31 16:03:20 +00:00
Vladimir Prus c1eae29b91 Improve InstVisitor docs.
llvm-svn: 28586
2006-05-31 15:30:18 +00:00
Reid Spencer 82ebabafde Provide a simpler interface for getting a ConstantArray from a character
string. Instead of specifying the length, just specify whether the user
wants a terminating null or not. The default is "true" to retain the same
behavior as previously provided by this function.

llvm-svn: 28562
2006-05-30 18:15:07 +00:00
Vladimir Prus 413441b9c9 Make doc comment visible in doxygen output. Clarify Type construction.
llvm-svn: 28555
2006-05-30 15:49:30 +00:00
Reid Spencer 84504f215b Properly document the second form of ConstArray::get()
llvm-svn: 28553
2006-05-30 08:26:13 +00:00
Reid Spencer 6f61453ff8 Adjust the interface to ConstantArray::get. The previous
implementation always added a null byte to the end of the string. It turns
out that this is not always wanted. By adding a length parameter we preserve
this behavior when length==0 (default value) but also allow other lengths
(not null terminated) to be created.

llvm-svn: 28552
2006-05-30 08:23:18 +00:00
Andrew Lenharth e465381401 Since there was interest on the mailing list, this is a utility pass that
uses DSA to make find targets of calls.  It provides a very convinient
interface to DSA results to do things with indirect calls, such as
write a devirtualizer (which I have and may commit one of these days).

llvm-svn: 28545
2006-05-29 22:58:38 +00:00
Reid Spencer 5531640f4b Replace an old C-style cast with a C++ cast (squelch warning)
llvm-svn: 28533
2006-05-29 02:32:43 +00:00
Chris Lattner 6b852931a0 Fix pastos in comments
llvm-svn: 28522
2006-05-27 06:57:55 +00:00
Chris Lattner 53e97ebd2c Implement a new method: CloneAndPruneFunctionInto, as documented.
llvm-svn: 28518
2006-05-27 01:21:50 +00:00
Chris Lattner 00bb5f8248 Add an interface to constant fold and instruction given it's opcode, type
and operands.

llvm-svn: 28516
2006-05-27 01:17:40 +00:00
Chris Lattner 608290c299 Add a new sentry node type, allowing assertions to catch trivial
use-after-deleted errors.

llvm-svn: 28513
2006-05-27 00:40:15 +00:00
Evan Cheng a2e9953c54 Change RET node to include signness information of the return values. e.g.
RET chain, value1, sign1, value2, sign2

llvm-svn: 28509
2006-05-26 23:09:09 +00:00
Owen Anderson 8eca8910b6 Skeletal LCSSA pass. This is currently non-functional. Expect functionality
and documentation updates soo.

llvm-svn: 28495
2006-05-26 13:58:26 +00:00
Chris Lattner cafbb1535d Fix breakage on platforms where string/cassert don't pull in int64_t.
llvm-svn: 28464
2006-05-25 05:59:50 +00:00
Evan Cheng d6f53213ba CALL node change: now containing signness of each argument.
llvm-svn: 28460
2006-05-25 00:54:33 +00:00
Reid Spencer 6e64180f03 For PR786:
Minor tweaks in public headers and a few .cpp files so that LLVM can build
successfully with -pedantic and projects using LLVM with -pedantic don't
get warnings from LLVM. There's still more -pedantic warnings to fix.

llvm-svn: 28453
2006-05-24 19:21:13 +00:00
Chris Lattner aa2372562e Patches to make the LLVM sources more -pedantic clean. Patch provided
by Anton Korobeynikov!  This is a step towards closing PR786.

llvm-svn: 28447
2006-05-24 17:04:05 +00:00
Evan Cheng ac4f66ff24 -enable-unsafe-fp-math implies -enable-finite-only-fp-math
llvm-svn: 28437
2006-05-23 18:18:46 +00:00
Vladimir Prus 5b917e48a2 Make class comment visible in Doxygen.
llvm-svn: 28436
2006-05-23 15:32:15 +00:00
Evan Cheng ea1450742e Added option -enable-finite-only-fp-math. When on, the codegen can assume that
FP arithmetic arguments and results are never NaNs or +=Infs. This includes
ignoring parity flag (PF) when checking for FP equality.

llvm-svn: 28432
2006-05-23 06:39:12 +00:00
Owen Anderson 80b1b4d41e Make TargetData strings less redundant.
llvm-svn: 28423
2006-05-20 23:28:54 +00:00
Chris Lattner 1f7f383635 Add new calling convention, as documented in LangRef.html
llvm-svn: 28404
2006-05-19 21:19:02 +00:00
Reid Spencer 3949d32155 Fix some doxygen usage in these headers.
llvm-svn: 28394
2006-05-19 19:07:54 +00:00
Chris Lattner c0a65d5ac8 Use class tags instead of struct tags. The coding standards specify this
for public classes for improved win32 compatibility.

llvm-svn: 28391
2006-05-19 17:17:12 +00:00
Evan Cheng d8e2f6ebc1 lib/Target/Target.td
llvm-svn: 28386
2006-05-18 20:42:07 +00:00
Owen Anderson 9eb1a268c1 Change Module to use TargetData-compatible strings internally.
This is part of the on-going work on PR 761.

llvm-svn: 28379
2006-05-18 02:10:31 +00:00
Evan Cheng 19aaaca293 Another typo. Pointed out by Nate Begeman.
llvm-svn: 28353
2006-05-17 18:22:14 +00:00
Evan Cheng 163bdaba24 Fix a mis-leading comment.
llvm-svn: 28350
2006-05-17 18:08:20 +00:00
Chris Lattner 2e266807c3 Add a CloneModule call that exposes the mapping of values from the old module
to the new module.  Patch provided by Nick Lewycky!

llvm-svn: 28349
2006-05-17 18:05:35 +00:00
Chris Lattner e33580e5b4 Add a new CALL node.
llvm-svn: 28337
2006-05-16 22:52:27 +00:00
Chris Lattner 84f9f380f2 There is now a default impl of this method
llvm-svn: 28336
2006-05-16 22:52:11 +00:00
Andrew Lenharth 1dc9ec5874 Move this code to a common place
llvm-svn: 28329
2006-05-16 17:42:15 +00:00
Chris Lattner 0f89bbd6cc Add a chain to FORMAL_ARGUMENTS.
llvm-svn: 28319
2006-05-16 06:43:59 +00:00
Reid Spencer 1f54156a01 For PR778:
Improve doxygenification of this header file.

llvm-svn: 28317
2006-05-16 06:27:31 +00:00
Chris Lattner d02dd3c388 Improve comments, patch provided by Vladimir Prus!
llvm-svn: 28305
2006-05-15 17:25:05 +00:00
Reid Spencer 0bc5119270 Doxygenify the comments, bringing the file level comments down to be attached
with the class that it documents. Patch suggested by Vladimir Prus.

llvm-svn: 28304
2006-05-15 16:12:01 +00:00
Chris Lattner a782bbe827 improve comment.
llvm-svn: 28296
2006-05-14 19:10:22 +00:00
Chris Lattner a8a550f1e3 Improve documentation on throwing, it is not complete still though. :(
llvm-svn: 28294
2006-05-14 19:07:07 +00:00
Chris Lattner f98ede25bb This is a proper fix for the compiler warning. A termination condition is
not needed, as it can never be reached: an edge must exist.

llvm-svn: 28282
2006-05-14 02:01:22 +00:00
Reid Spencer fc124ea453 Fix an infinite loop bug that Vladimir Prus identified.
llvm-svn: 28281
2006-05-13 18:11:32 +00:00
Reid Spencer c19fffd42d Add a #include <cassert> for situations where Casting.h is used standalone.
Patch contributed by Vladimir Prus.

llvm-svn: 28280
2006-05-13 17:50:38 +00:00
Evan Cheng d1915cfa6f Revert an un-intended change
llvm-svn: 28278
2006-05-13 05:53:47 +00:00
Reid Spencer c220ecfbb9 Don't use old-style casts. This prevents compiler warnings when CommandLine.h
is used in projects that have stricter warning control than LLVM. This also
helps us find casts more easily if we ever need to.

llvm-svn: 28263
2006-05-12 19:20:55 +00:00
Owen Anderson 5fea9f0a93 Add a method to generate a string representation from a TargetData.
This continues the work on PR 761.

llvm-svn: 28239
2006-05-12 07:01:44 +00:00
Owen Anderson 8c2c1e90c4 Refactor a bunch of includes so that TargetMachine.h doesn't have to include
TargetData.h.  This should make recompiles a bit faster with my current
TargetData tinkering.

llvm-svn: 28238
2006-05-12 06:33:49 +00:00
Evan Cheng 6a6886185b Backing out fix for PR770. Need to re-apply it after live range splitting is possible
llvm-svn: 28236
2006-05-12 06:06:34 +00:00
Owen Anderson 8d7774cb1d Add a new constructor to TargetData that builds a TargetData from its
string representation.

This is part of PR 761.

llvm-svn: 28234
2006-05-12 05:49:47 +00:00
Evan Cheng afed73eebe Add capability to scheduler to commute nodes for profit.
If a two-address code whose first operand has uses below, it should be commuted
when possible.

llvm-svn: 28230
2006-05-12 01:58:24 +00:00
Evan Cheng d38c22bdd3 Refactor scheduler code. Move register-reduction list scheduler to a
separate file. Added an initial implementation of top-down register pressure
reduction list scheduler.

llvm-svn: 28226
2006-05-11 23:55:42 +00:00