Commit Graph

42501 Commits

Author SHA1 Message Date
Dale Johannesen 0a7b4f5800 Allow SROA of vectors. Removing this caused a
huge performance regression in something we care
about.  This may not be final fix.

llvm-svn: 58718
2008-11-04 20:54:03 +00:00
Dale Johannesen db6b956585 80 columns
llvm-svn: 58717
2008-11-04 20:52:49 +00:00
Evan Cheng 297b32a367 Custom lower bit_convert i64 -> f64 into FMDRR. This is now happening with legalizetypes.
llvm-svn: 58714
2008-11-04 19:57:48 +00:00
Tanya Lattner 81edfc172e Add note about cmake. Patch by Oscar Fuentes.
llvm-svn: 58712
2008-11-04 18:40:27 +00:00
Dan Gohman daca2240b1 Give tablegen's Type a destructor, to suppress spurious
"Type has virtual functions but non-virtual destructor"
warnings.

llvm-svn: 58710
2008-11-04 18:09:07 +00:00
Duncan Sands dd571d325e Fix typo. Patch by nlewycky.
llvm-svn: 58709
2008-11-04 18:05:30 +00:00
Evan Cheng 4eaff40147 Debug output tweak.
llvm-svn: 58708
2008-11-04 17:58:53 +00:00
Evan Cheng 453844c352 LDM_RET restores pc, do not set 's' bit which would restore CPSR from SPSR.
llvm-svn: 58707
2008-11-04 17:57:07 +00:00
Duncan Sands d5f935921a Fix PR3011: LegalizeTypes support for scalarizing
SELECT_CC.

llvm-svn: 58706
2008-11-04 17:31:08 +00:00
Dan Gohman 20687e99b7 Duncan pointed out that the Extended case in getTypeForMVT could
be considerably simplified.

llvm-svn: 58703
2008-11-04 16:19:44 +00:00
Dan Gohman 72d10ab9ad Add a return statement to suppress warnings in NDEBUG builds.
llvm-svn: 58702
2008-11-04 16:08:57 +00:00
Dan Gohman ade09cd9d3 Add some asserts to verify MVT invariant assumptions.
llvm-svn: 58701
2008-11-04 16:03:56 +00:00
Nuno Lopes c6a5b0979f regenerate
llvm-svn: 58697
2008-11-04 14:43:20 +00:00
Nuno Lopes 0e92081b04 fix leakage of APFloats in getExistingVal()
llvm-svn: 58696
2008-11-04 14:42:19 +00:00
Nuno Lopes e4f5c9495f regenerate
llvm-svn: 58694
2008-11-04 14:28:33 +00:00
Nuno Lopes 724e67ec75 fix leakage of APSInt in getVal()
llvm-svn: 58693
2008-11-04 14:26:58 +00:00
Nuno Lopes 57c6594e97 fix leakage of IfcvtTokens
llvm-svn: 58690
2008-11-04 13:02:59 +00:00
Evan Cheng 9340be4641 For some targets, it's not possible to place GVs in the same memory buffer as the MachineCodeEmitter allocated memory. Code and data has different read / write / execution privilege requirements.
This is a short term workaround. The current solution is for the JIT memory manager to manage code and data memory separately.

llvm-svn: 58688
2008-11-04 09:30:48 +00:00
Nick Lewycky a6dee4e28f Don't "shell out" to resolve paths. Using pure perl makes llvm-config
friendlier to non-Unixes that happen to have perl. Patch from Sascha Othman!

llvm-svn: 58687
2008-11-04 08:05:21 +00:00
Evan Cheng 09053e62a9 80 col violation.
llvm-svn: 58684
2008-11-04 06:10:31 +00:00
Evan Cheng 2299c99d79 Stylistic change.
llvm-svn: 58683
2008-11-04 06:10:06 +00:00
Evan Cheng c1d10e6b42 hasDisassembler should return false if disassembler isn't available.
llvm-svn: 58682
2008-11-04 06:09:38 +00:00
Oscar Fuentes a69d8c50dc CMakeLists: removed asmprinter component from
tools/llc/CMakeLists.txt.

llvm-svn: 58678
2008-11-04 03:28:37 +00:00
Oscar Fuentes 7751a7b78d CMake: Support for building 32 bit mode libs and binaries on
Linux/x86-64.

llvm-svn: 58677
2008-11-04 03:27:24 +00:00
Oscar Fuentes 8881a91ae8 CMake: Updated list of source files.
llvm-svn: 58676
2008-11-04 03:24:04 +00:00
Bill Wendling 05d8417fa0 Initial checkin for stack protectors. Here's what it does:
* The prologue is modified to read the __stack_chk_guard global and insert it
  onto the stack.

* The epilogue is modified to read the stored guard from the stack and compare
  it to the original __stack_chk_guard value. If they differ, then the
  __stack_chk_fail() function is called.

* The stack protector needs to be first on the stack (after the parameters) to
  catch any stack-smashing activities.

Front-end support will follow after a round of beta testing.

llvm-svn: 58673
2008-11-04 02:10:20 +00:00
Evan Cheng 6dd08b6604 Handle ARM machine constantpool entries.
llvm-svn: 58671
2008-11-04 00:50:32 +00:00
Dan Gohman b9110e7fbb The ANDMask node folds to a constant, and isn't the node that needs to
have its node id set. The new and and shift nodes are the nodes that need
the IDs. This fixes PR2982.

llvm-svn: 58655
2008-11-03 23:43:55 +00:00
Devang Patel d26344d252 Fix unused variable warnings.
llvm-svn: 58653
2008-11-03 23:20:04 +00:00
Devang Patel f33f8a8606 Fix unused variable warnings.
llvm-svn: 58651
2008-11-03 23:14:09 +00:00
Dan Gohman d5104a5de6 Add C bindings for extractvalue and insertvalue. Patch by Frits van Bommel!
llvm-svn: 58650
2008-11-03 22:55:43 +00:00
Evan Cheng f60e5aaaac Remove a dead switch statement.
llvm-svn: 58644
2008-11-03 21:26:52 +00:00
Evan Cheng 3620e685b5 Minor code restructuring. No functionality change.
llvm-svn: 58643
2008-11-03 21:02:39 +00:00
Dale Johannesen 08535d2507 Fix some ppcf128 regressions: make ExpandFloatRes_LOAD
work correctly, and bring over a late change to ppcf128
SetCC handling.

llvm-svn: 58642
2008-11-03 20:47:45 +00:00
Duncan Sands 6692dec2a0 Make VAARG promotion work correctly with large funky
sized integers like i129, and also reduce the number
of assumptions made about how vaarg is implemented.
This still doesn't work correctly for small integers
like (eg) i1 on x86, since x86 passes each of them
(essentially an i8) in a 4 byte stack slot, so the
pointer needs to be advanced by 4 bytes not by 1 byte
as now.  But this is no longer a LegalizeTypes problem
(it was also wrong in LT before): it is a bug in the
operation expansion in LegalizeDAG: now LegalizeTypes
turns an i1 vaarg into an i8 vaarg which would work
fine if only the i8 vaarg was turned into correct code
later.

llvm-svn: 58635
2008-11-03 20:22:12 +00:00
Dan Gohman bde853911f Overload AddInteger on int/long/long long instead of on int/int64_t,
to avoid overload ambiguities. This fixes build errors introduced
by r58623.

llvm-svn: 58632
2008-11-03 19:40:18 +00:00
Devang Patel fe57d109b6 Ignore conditions that are outside the loop.
llvm-svn: 58631
2008-11-03 19:38:07 +00:00
Andrew Lenharth 348f3fa6a7 add a period at the end of the comment, ignoring the fact that the comment would be hard pressed to be considered a sentence, but if it makes Bill happy...
llvm-svn: 58630
2008-11-03 19:29:29 +00:00
Jim Grosbach 4d0549e3be Add binary encoding support for multiply instructions. Some blanks left to fill in, but the basics are there.
llvm-svn: 58626
2008-11-03 18:38:31 +00:00
Devang Patel c1631db93b Turn floating point IVs into integer IVs where possible.
This allows SCEV users to effectively calculate trip count.
LSR later on transforms back integer IVs to floating point IVs
later on to avoid int-to-float casts inside the loop.

llvm-svn: 58625
2008-11-03 18:32:19 +00:00
Dan Gohman ac41d9f5d8 Refactor various TargetAsmInfo subclasses' TargetMachine members away
adding a TargetMachine member to the base TargetAsmInfo class instead.

llvm-svn: 58624
2008-11-03 18:22:42 +00:00
Dan Gohman d7546abb8a Change how extended types are represented in MVTs. Instead of fiddling
bits, use a union of a SimpleValueType enum and a regular Type*.

This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits.
In most cases, this doesn't add significant overhead. There are places
in codegen that use arrays of MVTs, so these are now larger, but
they're small in common cases.

This eliminates restrictions on the size of integer types and vector
types that can be represented in codegen. As the included testcase
demonstrates, it's now possible to codegen very large add operations.
There are still some complications with using very large types. PR2880
is still open so they can't be used as return values on normal targets,
there are no libcalls defined for very large integers so operations
like multiply and divide aren't supported.

This also introduces a minimal tablgen Type library, capable of
handling IntegerType and VectorType. This will allow parts of
TableGen that don't depend on using SimpleValueType values to handle
arbitrary integer and vector types.

llvm-svn: 58623
2008-11-03 17:56:27 +00:00
Daniel Dunbar d395a1722d Comment fix.
llvm-svn: 58621
2008-11-03 17:33:36 +00:00
Dan Gohman f9e7f69141 Remove redundant inline keywords from functions defined within
class definitions.

llvm-svn: 58620
2008-11-03 17:10:24 +00:00
Andrew Lenharth 45b86322f2 Ensure that we are checking only calls to the function we are interested in specializing
llvm-svn: 58615
2008-11-03 16:05:35 +00:00
Anton Korobeynikov fb2f87bbfe Testcase for recent llvm-gcc fix
llvm-svn: 58611
2008-11-03 14:43:31 +00:00
Duncan Sands 0207a3f897 Make VAARG work with x86 long double (which is
10 bytes long, but is passed in 12/16 bytes).

llvm-svn: 58608
2008-11-03 11:51:11 +00:00
Matthijs Kooijman 2530f5fe43 Make MachineFrameInfo::print not crash when no TargetFrameInfo is available.
llvm-svn: 58606
2008-11-03 11:16:43 +00:00
Evan Cheng 3a9aead4d4 Silence a compiler warning.
llvm-svn: 58598
2008-11-03 07:14:02 +00:00
Nick Lewycky 7874fe900a Typo
llvm-svn: 58594
2008-11-03 03:50:40 +00:00
Nick Lewycky d73806a9cc Replace explicit loop with utility function.
llvm-svn: 58593
2008-11-03 03:49:14 +00:00
Nick Lewycky 7b14e20a5e Don't crash analyzing certain quadratics (addrec of {X,+,Y,+,1}).
We're still waiting on code that actually analyzes them properly.

llvm-svn: 58592
2008-11-03 02:43:49 +00:00
Owen Anderson b067843863 Revert my last patch until I consult with Evan about it.
llvm-svn: 58591
2008-11-03 02:33:28 +00:00
Nick Lewycky 3c6d34a7f0 Changes from Duncan's review:
* merge two weak functions by making them both alias a third non-weak fn
 * don't reimplement CallSite::hasArgument
 * whitelist the safe linkage types

llvm-svn: 58568
2008-11-02 16:46:26 +00:00
Anton Korobeynikov c11b47911d Testcase for PR2691
llvm-svn: 58567
2008-11-02 16:46:17 +00:00
Anton Korobeynikov 1db1b64e6e Silence a warning
llvm-svn: 58563
2008-11-02 11:47:11 +00:00
Duncan Sands cede1e035c Get this building on 64 bit machines (error:
cast from ‘const llvm::PointerType*’ to ‘unsigned int’
loses precision).

llvm-svn: 58561
2008-11-02 09:00:33 +00:00
Owen Anderson 2bb2aaa775 Don't do pre-splitting if doing so would create a value join that did not
exist before.  Updating the live intervals in that care is tricky in the general
case.

Evan, if you see a tighter guard condition for this, let me know.

llvm-svn: 58560
2008-11-02 08:08:18 +00:00
Oscar Fuentes 0433be6feb CMake: added a source file.
llvm-svn: 58559
2008-11-02 06:01:39 +00:00
Nick Lewycky d01d42e76c Add a new MergeFunctions pass. It finds identical functions and merges them.
This triggers only 60 times in llvm-test (look at .llvm.bc, not .linked.rbc)
and so it probably wont be turned on by default. Also, may of those are likely
to go away when PR2973 is fixed.

llvm-svn: 58557
2008-11-02 05:52:50 +00:00
Nick Lewycky 8d8acf327b Fix demanded bits analysis with srem by negative number. Based on a patch
by Richard Osborne.

llvm-svn: 58555
2008-11-02 02:41:50 +00:00
Dan Gohman 83eea0b17f Fix this recently moved code to use the correct type. CI is now a
ConstantInt, and SI is the original cast instruction. This fixes
PR2996.

llvm-svn: 58549
2008-11-02 00:17:33 +00:00
Mon P Wang 769134be1e Added interface to allow clients to create a MemIntrinsicNode for
target intrinsics that touches memory

llvm-svn: 58548
2008-11-01 20:24:53 +00:00
Sanjiv Gupta 20b9687450 Reverting back 58505. Will commit it once I have the bc reader/writer/docs
ready.

llvm-svn: 58547
2008-11-01 10:57:12 +00:00
Bill Wendling 03f5122c6c Whitespace fixes. No functionality change.
llvm-svn: 58539
2008-10-31 21:26:08 +00:00
Anton Korobeynikov a411e2a086 Testcase for PR2613
llvm-svn: 58537
2008-10-31 20:10:49 +00:00
Anton Korobeynikov 7c5a01f0ec Invalidate debug/eh/gc labels when unreachable MBB is deleted.
Based on patch by Martin Nowack!

llvm-svn: 58536
2008-10-31 20:08:30 +00:00
Evan Cheng 83bf3de134 Add comment.
llvm-svn: 58533
2008-10-31 19:56:03 +00:00
Evan Cheng 20dbb3bcad Use better data structure for ConstPoolId2AddrMap.
llvm-svn: 58532
2008-10-31 19:55:13 +00:00
Evan Cheng 44994e0c77 Actually make debug output understandable.
llvm-svn: 58529
2008-10-31 19:15:52 +00:00
Mon P Wang ef89465c9f x86_64 rip-relative and magic mode address
llvm-svn: 58528
2008-10-31 19:13:42 +00:00
Evan Cheng 8fce66a47c Forgot this in last commit.
llvm-svn: 58527
2008-10-31 19:11:09 +00:00
Evan Cheng 467e6e8093 Encode PICADD; some code clean up.
llvm-svn: 58526
2008-10-31 19:10:44 +00:00
Dan Gohman 50c76beeb0 Remove some unused virtual function bodies.
llvm-svn: 58524
2008-10-31 19:06:33 +00:00
Bill Wendling d2bc13380f Revert r58489. It isn't correct for all cases.
llvm-svn: 58523
2008-10-31 18:30:19 +00:00
Anton Korobeynikov 21c9705264 Symbol visibility is unsupported on cygwin too.
Patch by Jay Foad!

llvm-svn: 58520
2008-10-31 18:05:01 +00:00
Torok Edwin 38cbc4ba20 Add an assert to catch user errors like:
MyFunctionPass() : FunctionPass(ID) {}

when the user actually meant to write:
MyFunctionPass() : FunctionPass(&ID) {}

llvm-svn: 58518
2008-10-31 17:27:41 +00:00
Evan Cheng 7e8202fce4 Change x86 register allocation ordering to match that of gcc. Otherwise some tools get confused by prologue generated by llvm.
llvm-svn: 58517
2008-10-31 16:52:57 +00:00
Evan Cheng d1f8c9f4a2 Add a fixme.
llvm-svn: 58514
2008-10-31 16:41:59 +00:00
Dan Gohman 71d7e9b667 Totally disable the setSubgraphColor calls temporarily, as they're
currently troublesome even for #ifndef NDEBUG builds.

llvm-svn: 58512
2008-10-31 16:12:56 +00:00
Duncan Sands 8758851908 Add a bunch of libcalls for ppcf128 that were somehow
completely forgotten about when writing LegalizeTypes.

llvm-svn: 58508
2008-10-31 14:06:52 +00:00
Sanjiv Gupta e3ba47b71b For some targets pointer and int are 16-bits. Allow 16-bits as a valid index
in such cases.

llvm-svn: 58505
2008-10-31 10:26:20 +00:00
Bill Wendling 6d70df0b05 Don't skip over all "terminator" instructions when determining where to put the
callee-saved restore code. It could skip over conditional jumps
accidentally. Instead, just skip the "return" instructions.

llvm-svn: 58489
2008-10-31 04:00:23 +00:00
Daniel Dunbar a1c4fcfc29 Fix warning.
llvm-svn: 58486
2008-10-31 01:50:01 +00:00
Oscar Fuentes 39304667af CMake: Fix some unwanted commentary line wraps on the last change.
llvm-svn: 58485
2008-10-31 01:37:26 +00:00
Oscar Fuentes c999dfadf1 CMake: Establish dependencies among executables and libraries, using
data manually extracted from llvm-config.

llvm-svn: 58484
2008-10-31 01:24:51 +00:00
Dan Gohman 99cdf8893e Use MOVSSmr instead of EXTRACTPSmr in the case of extracting
vector element 0 for a store, as it's smaller and faster.

llvm-svn: 58483
2008-10-31 00:57:24 +00:00
Jim Grosbach 2589604d85 Revert errant deletion. The target needs to be able to specify that it doesn't want the generic constant pool to be emitted.
llvm-svn: 58475
2008-10-30 23:44:39 +00:00
Evan Cheng c696ef9b11 I think we got non-machine specific constpool entries covered.
llvm-svn: 58474
2008-10-30 23:43:36 +00:00
Cedric Venet 6c9f3ec66c Change the name of the generated solution file for a CMake build. (from 'project' to 'LLVM').
!!!!!!!!!! Warning !!!!!!!!!!!!!!!
If you already have created a solution with cmake, you will need to manually open to the new one.

llvm-svn: 58461
2008-10-30 21:22:00 +00:00
Duncan Sands aa53c491b2 Testcase for PR2987.
llvm-svn: 58459
2008-10-30 21:13:11 +00:00
Dan Gohman 13cbcf1c18 Canonicalize sext(i1) to i1?-1:0, and update various instcombine
optimizations accordingly.

llvm-svn: 58457
2008-10-30 20:40:10 +00:00
Duncan Sands 8311657b98 Testcase for PR2986.
llvm-svn: 58456
2008-10-30 20:34:30 +00:00
Duncan Sands e18295c258 Fix PR2986: do not use a potentially illegal
type for the shift amount type.  Add a check
that shifts and rotates use the type returned
by getShiftAmountTy for the amount.  This
exposed some problems in CellSPU and PPC,
which have already been fixed.

llvm-svn: 58455
2008-10-30 20:26:50 +00:00
Duncan Sands 1310574b0f Shift amounts should have type getShiftAmountTy
(i32 for PPC, not i8).  Correct this, and some
formatting while there.

llvm-svn: 58451
2008-10-30 19:28:32 +00:00
Daniel Dunbar 3933e66a89 Add InlineCost class for represent the estimated cost of inlining a
function.
 - This explicitly models the costs for functions which should
   "always" or "never" be inlined. This fixes bugs where such costs
   were not previously respected.

llvm-svn: 58450
2008-10-30 19:26:59 +00:00
Duncan Sands 0852f48d1d Shift amounts should have the type given by
getShiftAmountTy (i32 in the case of CellSPU).

llvm-svn: 58449
2008-10-30 19:24:28 +00:00
Mon P Wang 01b8a5a967 Add missing vsetcc expansion for widening
llvm-svn: 58443
2008-10-30 18:21:52 +00:00
Oscar Fuentes 50af02391b CMake: Reverted some unintentional changes on the previous commit.
llvm-svn: 58435
2008-10-30 17:21:37 +00:00
Oscar Fuentes 876aa17142 CMake: Cygwin pretends to be Unix.
Patch by Jay Foad.

llvm-svn: 58434
2008-10-30 17:15:54 +00:00
Evan Cheng 66cff408ff ARM JIT should observe -relocation-model command line option.
llvm-svn: 58433
2008-10-30 16:10:54 +00:00
Mon P Wang 58c3794c27 Add initial support for vector widening. Logic is set to widen for X86.
One will only see an effect if legalizetype is not active.  Will move
support to LegalizeType soon.

llvm-svn: 58426
2008-10-30 08:01:45 +00:00
Chris Lattner 7292fb191f mention fortran status.
llvm-svn: 58416
2008-10-30 03:58:13 +00:00
Scott Michel 487c43412d Resolve bug 2947: vararg-marked functions must spill registers R3-R79 to stack
so that va_start/va_arg/et.al. will walk arguments correctly for Cell SPU.

N.B.: Because neither clang nor llvm-gcc-4.2 can be built for CellSPU, this is
still unexorcised code.

llvm-svn: 58415
2008-10-30 01:51:48 +00:00
Bill Wendling af7059edbf Revert r58411. The user needs to #define this when using the JITMemoryManager.h header.
llvm-svn: 58414
2008-10-30 01:22:58 +00:00
Dan Gohman 97acad13de Spell DISABLE_ASSERTIONS correctly.
llvm-svn: 58413
2008-10-30 01:08:03 +00:00
Bill Wendling f11b321b28 Revert part of r58048. It was breaking on SnowLeopard claiming that
"__STDC_CONSTANT_MACROS" needs to be #defined first.

llvm-svn: 58411
2008-10-30 00:11:55 +00:00
Evan Cheng 19d64ba8bf Correct way to handle CONSTPOOL_ENTRY instructions.
llvm-svn: 58409
2008-10-29 23:55:43 +00:00
Evan Cheng de9dbc5584 Add debugging support.
llvm-svn: 58408
2008-10-29 23:55:17 +00:00
Evan Cheng 4421a114bb Let target resolve some relocation results.
llvm-svn: 58407
2008-10-29 23:54:46 +00:00
Evan Cheng d520a5296a This is not needed anymore.
llvm-svn: 58406
2008-10-29 23:54:10 +00:00
Evan Cheng 34bd7fbb13 Add a bit to MachineRelocation that tells JIT that target is responsible for resolving the address. e.g. ARM constpool.
llvm-svn: 58405
2008-10-29 23:53:42 +00:00
Nate Begeman 534ac08ebd Fix PEXTRQ encoding
llvm-svn: 58403
2008-10-29 23:07:17 +00:00
Chris Lattner 7ee0012707 add testcase for PR2964
llvm-svn: 58393
2008-10-29 18:42:22 +00:00
Dale Johannesen 98aa9d3e49 Add a RM pseudoreg for the rounding mode, which
allows ppcf128->int conversion to work with
DeadInstructionElimination.  This is now turned
off but RM is harmless.  It does not do a complete
job of modeling the rounding mode.

Revert marking MFCR as using all 7 CR subregisters;
while correct, this caused the problem in PR 2964,
plus the local RA crash noted in the comments.
This was needed to make DeadInstructionElimination,
but as we are not running that, it is backed out
for now.  Eventually it should go back in and the
other problems fixed where they're broken.

llvm-svn: 58391
2008-10-29 18:26:45 +00:00
Duncan Sands 57b754612c Testcase for PR2917.
llvm-svn: 58389
2008-10-29 18:06:20 +00:00
Duncan Sands ee273419f9 Uniformize capitalization of NodeId.
llvm-svn: 58386
2008-10-29 17:52:12 +00:00
Chris Lattner 0934c0f35b Fix PR2967 by not deleting volatile load/stores that occur before unreachable.
I don't really see this as being needed, but there is little harm from doing
it.

llvm-svn: 58385
2008-10-29 17:46:26 +00:00
Torok Edwin 49c28e4599 fix typo
llvm-svn: 58384
2008-10-29 16:32:06 +00:00
Duncan Sands f33c3bc51f Make the declaration of bzero match size_t on
x86-64-linux.

llvm-svn: 58383
2008-10-29 15:57:37 +00:00
Duncan Sands fbb10bbec4 Fix PR2977: LegalizeTypes support for expanding
VAARG.

llvm-svn: 58379
2008-10-29 14:25:28 +00:00
Duncan Sands 17e678be87 Add sanity checking for BUILD_PAIR (I noticed the
other day that PPC custom lowering could create
a BUILD_PAIR of two f64 with a result type of...
f64! - already fixed).  Fix a place that triggers
the sanity check.

llvm-svn: 58378
2008-10-29 14:22:20 +00:00
Evan Cheng ce3ccc1ea0 - More pre-split fixes: spill slot live interval computation bug; restore point bug.
- If a def is spilt, remember its spill index to allow its reuse.

llvm-svn: 58375
2008-10-29 08:39:34 +00:00
Duncan Sands b964813b1f Fix a FIXME: in ReplaceNodeWith, if the new node
is morphed by AnalyzeNewNode into a previously
processed node, and different result values of
that node are remapped to values with different
nodes, then we could end up using wrong values
here [we were assuming that all results remap
to values with the same underlying node].  This
seems theoretically possible, but I don't have
a testcase.  The meat of the patch is in the
changes to AnalyzeNewNode/AnalyzeNewValue and
ReplaceNodeWith.  While there, I changed names
like RemapNode to RemapValue, since it really
remaps values.  To tell the truth, I would be
much happier if we were only remapping nodes
(it would simplify a bunch of logic, and allow
for some cute speedups) but I haven't yet worked
out how to do that.

llvm-svn: 58372
2008-10-29 06:42:19 +00:00
Duncan Sands 914745768e Fix 80 column violations.
llvm-svn: 58371
2008-10-29 06:33:00 +00:00
Duncan Sands d4ec020734 Fix 80 column violations.
llvm-svn: 58370
2008-10-29 06:31:03 +00:00
Evan Cheng 938e201528 - Rewrite code that update register live interval that's split.
- Create and update spill slot live intervals.
- Lots of bug fixes.

llvm-svn: 58367
2008-10-29 05:06:14 +00:00
Oscar Fuentes 2500aaebdd CMake: Removed some cruft.
llvm-svn: 58358
2008-10-29 02:33:15 +00:00
Daniel Dunbar e7fbf9f425 Factor shouldInline method out of Inliner.
- No functionality change.

llvm-svn: 58355
2008-10-29 01:02:02 +00:00
David Greene 125f96d369 Don't force things to be Value * when they're not.
llvm-svn: 58354
2008-10-29 00:30:54 +00:00
Daniel Dunbar cc20455346 Assorted comment/naming fixes, 80-col violations, and reindentation.
- No functionality change.

llvm-svn: 58352
2008-10-28 23:24:26 +00:00
Dan Gohman 2c34c130bf (A & sext(C)) | (B & ~sext(C) -> C ? A : B
llvm-svn: 58351
2008-10-28 22:38:57 +00:00
Dan Gohman 1e3c25ac2d Take Chris' suggestion and define EnableFastISelVerbose and
EnableFastISelAbort variables for Release mode instead of
using ifdefs in the code.

llvm-svn: 58350
2008-10-28 20:35:31 +00:00
Chris Lattner 8f243a5dde llvm-ld doesn't have a -march option. This fixes PR2961
llvm-svn: 58345
2008-10-28 20:05:06 +00:00
Daniel Dunbar db0b70a937 Reuse PrintEscapedString for printing names in .ll
- One functionality change, '\\' in a name is now printed as a hex
   escape instead of "\\\\". This is consistent with other users of
   PrintEscapedString.

llvm-svn: 58343
2008-10-28 19:33:02 +00:00
Dan Gohman e750bb67ee Protect the code for fast-isel debugging with #ifndef NDEBUG.
llvm-svn: 58340
2008-10-28 19:08:46 +00:00
Dan Gohman f15195d8a9 Add some more information to the top-level comment for this file.
llvm-svn: 58339
2008-10-28 18:47:37 +00:00
Jim Grosbach ff2b4948ce Support for constant islands in the ARM JIT.
Since the ARM constant pool handling supercedes the standard LLVM constant
pool entirely, the JIT emitter does not allocate space for the constants,
nor initialize the memory. The constant pool is considered part of the 
instruction stream.

Likewise, when resolving relocations into the constant pool, a hook into
the target back end is used to resolve from the constant ID# to the
address where the constant is stored.

For now, the support in the ARM emitter is limited to 32-bit integer. Future
patches will expand this to the full range of constants necessary.

llvm-svn: 58338
2008-10-28 18:25:49 +00:00
Torok Edwin df851ff94f fix prototype of print, it is (llvm/Pass.h):
virtual void print(std::ostream &O, const Module *M) const;
instead of
  virtual void print(llvm::OStream &O, const Module *M) const;
as the docs say

llvm-svn: 58337
2008-10-28 17:29:23 +00:00
Evan Cheng c0468cf03c Avoid calls to setSubgraphColor in release mode. They generate lots of error messages and slow down compilation.
llvm-svn: 58336
2008-10-28 17:23:13 +00:00
Tanya Lattner e660fa88ee Do not allow a user to set the operand for a constant.
llvm-svn: 58335
2008-10-28 17:22:40 +00:00
Torok Edwin 7b747ef017 fix duplicate anchor names, and broken anchor links from the TOC
llvm-svn: 58332
2008-10-28 16:54:34 +00:00
Duncan Sands 4068a7f31e Fix darwin ppc llvm-gcc build breakage: intercept
ppcf128 to i32 conversion and expand it into a code
sequence like in LegalizeDAG.  This needs custom
ppc lowering of FP_ROUND_INREG, so turn that on and
make it work with LegalizeTypes.  Probably PPC should
simply custom lower the original conversion.

llvm-svn: 58329
2008-10-28 15:00:32 +00:00
Duncan Sands b68694f17d Turn off LegalizeTypes for this test for the
moment, while waiting for a proper solution.

llvm-svn: 58324
2008-10-28 09:55:04 +00:00
Duncan Sands f3e5850f80 Fix a testcase provided by Bill in which the node
id could end up being wrong mostly because of
forgetting to remap new nodes that morphed into
processed nodes through CSE.

llvm-svn: 58323
2008-10-28 09:38:36 +00:00
Chris Lattner 5fa1040130 Don't produce invalid comparisons after legalize.
llvm-svn: 58320
2008-10-28 07:11:07 +00:00
Chris Lattner 56d016ab05 fix some whitespace stuff
llvm-svn: 58319
2008-10-28 07:10:51 +00:00
Chris Lattner a2422d8f3e fit in 80 cols
llvm-svn: 58318
2008-10-28 06:20:17 +00:00
Chris Lattner 38461f6b2f Fix a nasty miscompilation of 176.gcc on linux/x86 where we synthesized
a memset using 16-byte XMM stores, but where the stack realignment code
didn't work.  Until it does (PR2962) disable use of xmm regs in memcpy
and memset formation for linux and other targets with insufficiently
aligned stacks.

This is part of PR2888

llvm-svn: 58317
2008-10-28 05:49:35 +00:00
Chris Lattner 50bfa4306a more comment cleanups.
llvm-svn: 58316
2008-10-28 05:32:08 +00:00
Chris Lattner 9356a868ef comment cleanups.
llvm-svn: 58315
2008-10-28 05:31:31 +00:00
Evan Cheng 5e88d90379 If def is in the same mbb as the barrier, spilt the value after the last use before the barrier.
llvm-svn: 58314
2008-10-28 05:28:21 +00:00
Evan Cheng 9f854697e4 Add command line option to limit the number splits to help debugging.
llvm-svn: 58312
2008-10-28 01:48:24 +00:00
Dan Gohman 7634f6379f Fix the name of the include guard to match the filename.
llvm-svn: 58310
2008-10-28 00:52:46 +00:00
Evan Cheng fab31680e1 Avoid putting a split past the end of the live range; always shrink wrap live interval in the barrier mbb.
llvm-svn: 58309
2008-10-28 00:47:49 +00:00
Bill Wendling 6e4ffba212 - Fix SUBVERSION string to handle x.x.x version number formats.
- Add VERBOSE=1 flag.
- Specify the LLVM_SUBMIT_VERSION when doing the "make install".
  The libLTO.dylib relies upon this flag during that time.

llvm-svn: 58298
2008-10-27 23:31:24 +00:00
Evan Cheng e67ad47a00 Silence a bogus compile time warning.
llvm-svn: 58297
2008-10-27 23:29:28 +00:00
David Greene aebd9e01d7 Re-apply 55137 with fixes.
llvm-svn: 58296
2008-10-27 23:24:03 +00:00
Evan Cheng f46642ada6 Remove val# defined by a remat'ed def that is now dead.
llvm-svn: 58294
2008-10-27 23:21:01 +00:00
Ted Kremenek 8fcff4d87a Fix bogus comparison of "const char *" with c-string literal. Use strcmp instead.
llvm-svn: 58290
2008-10-27 22:43:07 +00:00
David Greene ce2a938186 Have TableGen emit setSubgraphColor calls under control of a -gen-debug
flag.  Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like.  This really helps when debugging instruction selection.

llvm-svn: 58278
2008-10-27 21:56:29 +00:00
Daniel Dunbar e3aa50c280 Return bool (inserted) from StringSet::insert as for StringMap::insert.
llvm-svn: 58268
2008-10-27 20:50:02 +00:00
Cedric Venet 4e6ad3c12b Remove tabs from my previous commit.
llvm-svn: 58263
2008-10-27 19:21:35 +00:00
Chris Lattner b5cf101fa2 rename vec_spat -> vec_splat, pointed out by duncan
llvm-svn: 58260
2008-10-27 18:28:24 +00:00
David Greene b04e7c36d3 Add setSubgraphColor to color an entire portion of a SelectionDAG. This
will be used to support debug features in TableGen.

llvm-svn: 58257
2008-10-27 18:17:03 +00:00
David Greene f9812d8166 Add STL-style typedefs and default constructors to make it possible to
use DenseMap in more contexts.

llvm-svn: 58256
2008-10-27 18:15:15 +00:00
David Greene b00b267bcc Fix PR2634. Create new virtual registers from spills early so that we
can give it the same stack slot as the spilled interval if it is folded.
This prevents the fold/unfold code from pointing to the wrong register.

llvm-svn: 58255
2008-10-27 17:38:59 +00:00
Matthijs Kooijman d470f73e2c Remove redundant word in tblgen error message.
llvm-svn: 58250
2008-10-27 15:59:43 +00:00
Duncan Sands 835bdca590 Fix UpdateNodeOperands so that it does CSE of calls
(and a bunch of other node types).  While there, I
added a doNotCSE predicate and used it to reduce code
duplication (some of the duplicated code was wrong...).
This fixes ARM/cse-libcalls.ll when using LegalizeTypes. 

llvm-svn: 58249
2008-10-27 15:30:53 +00:00
Duncan Sands 75cf2e03ab Fix a bug in which a node could be added to the
worklist twice: UpdateNodeOperands could morph
a new node into a node already on the worklist.
We would then recalculate the NodeId for this
existing node and add it to the worklist.  The
testcase is ARM/cse-libcalls.ll, the problem
showing up once UpdateNodeOperands is taught to
do CSE for calls.

llvm-svn: 58246
2008-10-27 13:18:32 +00:00
Torok Edwin 450ffd2f3e Avoid crashing if instruction is not part of a loop.
If it is not part of a loop it is obviously invariant wrt to all loops.

llvm-svn: 58240
2008-10-27 10:18:45 +00:00
Gabor Greif bb026a0c63 formatting tweak for intrinsic
llvm-svn: 58239
2008-10-27 10:17:24 +00:00
Torok Edwin ca97b42ef7 export an ID for the instructionNamer, allowing analysis/transformation passes
that need it to require it by ID.

llvm-svn: 58238
2008-10-27 10:16:27 +00:00
Bill Wendling ef36246c6f Some grammar fixes, and non-invasive format changes.
llvm-svn: 58237
2008-10-27 09:27:33 +00:00
Duncan Sands 8475d56794 Turn on LegalizeTypes, the new type legalization
codegen infrastructure, by default.  Please report
any breakage to the mailing lists.

llvm-svn: 58232
2008-10-27 08:42:46 +00:00
Nick Lewycky c5a68d26d9 Fix an obvious copy/pasto.
llvm-svn: 58231
2008-10-27 07:28:44 +00:00
Evan Cheng f713722975 For now, don't split live intervals around x87 stack register barriers. FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.
llvm-svn: 58230
2008-10-27 07:14:50 +00:00
Chris Lattner 59b5691388 Rewrite all the 'PromoteLocallyUsedAlloca[s]' logic. With the power of
LargeBlockInfo, we can now dramatically simplify their implementation
and speed them up at the same time.  Now the code has time proportional
to the number of uses of the alloca, not the size of the block.

This also eliminates code that tried to batch up different allocas which
are used in the same blocks, and eliminates the 'retry list' logic which
was baroque and no unneccesary.  In addition to being a speedup for crazy
cases, this is also a nice cleanup:

PromoteMemoryToRegister.cpp |  270 +++++++++++++++-----------------------------
 1 file changed, 96 insertions(+), 174 deletions(-)

llvm-svn: 58229
2008-10-27 07:05:53 +00:00
Chris Lattner a9642ff459 no need to print output
llvm-svn: 58228
2008-10-27 06:56:35 +00:00
Chris Lattner f594ecc453 Add a new LargeBlockInfo helper, which is just a wrapper around
a trivial dense map.  Use this in RewriteSingleStoreAlloca to
avoid aggressively rescanning blocks over and over again.  This
fixes PR2925, speeding up mem2reg on the testcase in that bug
from 4.56s to 0.02s in a debug build on my machine.

llvm-svn: 58227
2008-10-27 06:05:26 +00:00
Chris Lattner bf2262270e mention getresult -> extractvalue (PR2935)
llvm-svn: 58226
2008-10-27 04:39:23 +00:00
Dale Johannesen 1d7e42c8fe Increase default setting of tail-merge-threshold to
150, based on llvm-test measurements.

llvm-svn: 58225
2008-10-27 02:10:21 +00:00
Nick Lewycky f5ba827d41 Remove -check-exit-code from bugpoint. This is subsumed by -append-exit-code.
Note that -check-exit-code was on by default while -append-exit-code is not.

llvm-svn: 58221
2008-10-26 23:59:36 +00:00
Chris Lattner 2bfc72e65e fix PR2953, an off-by-one error handling formatted i/o.
Thanks to Török Edwin for the awesome reduced testcase.

llvm-svn: 58199
2008-10-26 19:20:47 +00:00
Chris Lattner a43f2b21e7 remove eh output from this test.
llvm-svn: 58196
2008-10-26 18:53:07 +00:00
Cedric Venet 10a11f033c Add a default constructor to AsmWriterOperand to make VS2008sp1 happy. (AsmWriterOperand is used in a std::pair, and VS need to generate the default constructor of this pair).
llvm-svn: 58185
2008-10-26 15:40:44 +00:00
Evan Cheng ed033ede22 Do not shrink wrap live interval in a mbb if it's livein any of its successor blocks. The mbb can be revisited again after all of the successors are processed.
llvm-svn: 58184
2008-10-26 07:49:03 +00:00
Oscar Fuentes 29a0da5f8e Return something (i.e. NULL) from an unimplemented virtual function.
llvm-svn: 58183
2008-10-26 04:26:33 +00:00
Oscar Fuentes e638f5d854 CMake: If we have `clang' under the `tools/' subdirectory, add it to
the build.

llvm-svn: 58179
2008-10-26 00:52:09 +00:00
Oscar Fuentes 20baf2fc3c CMake: Support for LLVM_USED_LIBS variable, which is the cmake
counterpart of USED_LIBS.

llvm-svn: 58178
2008-10-26 00:51:05 +00:00
Oscar Fuentes ca0b988a21 CMake: Removed unnecessary macro definitions. They are defined in
config.h

llvm-svn: 58177
2008-10-26 00:50:03 +00:00
Oscar Fuentes bf81f792cd CMake: GetTargetTriple: new module for determining the target
triple. Assign to LLVM_HOSTTRIPLE so it figures in config.h.

llvm-svn: 58176
2008-10-26 00:47:52 +00:00
Bill Wendling 97f7de8875 Fix type-o in ExprMapKeyType::operator ==(). The "&&" was missing.
Patch by Frits van Bommel!

llvm-svn: 58175
2008-10-26 00:19:56 +00:00
Evan Cheng f48367b8e9 Handle cases where there aren't uses in the barrier mbb.
llvm-svn: 58174
2008-10-25 23:49:39 +00:00
Evan Cheng 6be78004a5 Add storeRegTo{StackSlot|Addr} and loadRegFrom{StackSlot|Addr} descriptions.
llvm-svn: 58164
2008-10-25 23:08:22 +00:00
Dan Gohman f856f50463 Make comments and code for QuietWarnings and QuietErrors
actually correspond to what their names suggest.

llvm-svn: 58146
2008-10-25 17:57:20 +00:00
Dan Gohman 811eed81ab SDNodes may have at most one Flag result. Update this comment
to reflect that.

llvm-svn: 58145
2008-10-25 17:51:24 +00:00
Dan Gohman 191453174d Move the code that adds the DeadMachineInstructionElimPass from
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.

In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.

llvm-svn: 58144
2008-10-25 17:46:52 +00:00
Gordon Henriksen bf40eee91a Related to PR2911, reject as invalid non-pointer GC roots.
llvm-svn: 58143
2008-10-25 16:28:35 +00:00
Nicolas Geoffray 5457ce9ac3 Support for allocation of TLS variables in the JIT. Allocation of a global
variable is moved to the execution engine. The JIT calls the TargetJITInfo
to allocate thread local storage. Currently, only linux/x86 knows how to
allocate thread local global variables.

llvm-svn: 58142
2008-10-25 15:41:43 +00:00
Nicolas Geoffray db30612fc4 Generate code for TLS instructions.
llvm-svn: 58141
2008-10-25 15:22:06 +00:00
Bruno Cardoso Lopes 24eb3de4c2 Added MIPS release notes.
llvm-svn: 58139
2008-10-25 14:56:26 +00:00
Oscar Fuentes 24617b7152 CMake: Directed bug reports to llvmbugs.
llvm-svn: 58134
2008-10-25 03:49:35 +00:00
Oscar Fuentes 9ba4650b76 CMake: lib/Target/ARM/AsmPrinter/CMakeLists.txt added.
llvm-svn: 58133
2008-10-25 03:40:32 +00:00
Oscar Fuentes a9ac909248 CMake: MSVC++ no longer uses a special configuration method.
llvm-svn: 58132
2008-10-25 03:29:36 +00:00
Oscar Fuentes 593bb21ded CMake: Sync'ed DataTypes.h.cmake with DataTypes.h.in.
llvm-svn: 58131
2008-10-25 03:25:11 +00:00
Oscar Fuentes c4b5c8c1ed CMake: Cross-platform support for using pre-generated llvmAsmParser.cpp and llvmAsmParser.h.
llvm-svn: 58130
2008-10-25 03:19:08 +00:00
Evan Cheng 85d71d4588 If val# def is ~0U, meaning it's defined by a PHI, and it's previously split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.
llvm-svn: 58129
2008-10-25 00:52:41 +00:00
Dale Johannesen 71f361e758 Mark MFCR as reading all condition code registers.
Prevents some more overzealous deletions (mostly
in AltiVec code).

llvm-svn: 58121
2008-10-24 22:08:01 +00:00
Dale Johannesen 3863f8e725 Rewrite logic to figure out whether LR needs to
be saved/restored in the prolog/epilog.  We need
to do this iff something in the function stores
into it.

llvm-svn: 58116
2008-10-24 21:24:23 +00:00
Dale Johannesen e45896fc4f Be kind to non-x86 hosts.
llvm-svn: 58113
2008-10-24 21:20:25 +00:00
Torok Edwin 33986d8f17 move the note to the correct README
llvm-svn: 58104
2008-10-24 19:23:07 +00:00
Torok Edwin fcaae54669 add note about va_arg code on x86 and x86-64
llvm-svn: 58103
2008-10-24 19:20:05 +00:00
Evan Cheng cd160f9859 Fix a pasto.
llvm-svn: 58102
2008-10-24 18:46:44 +00:00
Duncan Sands 014f5bbaad Fix translateX86CC: if SetCCOpcode is SETULE and
LHS is a foldable load, then LHS and RHS are swapped
and SetCCOpcode is changed to SETUGT.  But the later
code is expecting operands to be the wrong way round
for SETUGT, but they are not in this case, resulting
in an inverted compare.  The solution is to move the
load normalization before the correction for SETUGT.
This bug was tickled by LegalizeTypes which happened
to legalize the testcase slightly differently to
LegalizeDAG.

llvm-svn: 58092
2008-10-24 13:03:10 +00:00
Cedric Venet a00d112486 Modify the cmake build system so that if it doesn't find bison, it will use the pregenerated file in from the svn (.cvs). Work only for windows for the moment. Tested on Vista64 with MSVC2008express.
llvm-svn: 58090
2008-10-24 11:24:33 +00:00
Steve Naroff 7fb14b0cd0 Add a file to VC++ proj.
llvm-svn: 58089
2008-10-24 10:38:57 +00:00
Nick Lewycky 730d5dade6 Don't try to create a mask when we don't need one. Fixes a crash.
llvm-svn: 58075
2008-10-24 06:14:27 +00:00
Evan Cheng f8b09d424d Fix a end() dereference; remove an abort() that wasn't meant to be left in.
llvm-svn: 58072
2008-10-24 05:53:44 +00:00
Nick Lewycky f6e4dca67e Add value range analyzing of Add and Sub.
Understand that mul %x, 1 = %x.

llvm-svn: 58069
2008-10-24 04:00:26 +00:00
Evan Cheng 4bac4d0a16 Avoid splitting an interval multiple times; avoid splitting re-materializable val# (for now).
llvm-svn: 58068
2008-10-24 02:05:00 +00:00
Dan Gohman 712886f561 Fix constant-offset emission for x86-64 absolute addresses. This
fixes a bunch of test-suite JIT failures on x86-64 in
-relocation-model=static mode.

llvm-svn: 58066
2008-10-24 01:57:54 +00:00
Steve Naroff 886b5193a7 Add file to VC++ project.
llvm-svn: 58060
2008-10-24 01:21:47 +00:00
Dale Johannesen 8b531d2754 Initialize uninitialized variable.
llvm-svn: 58057
2008-10-24 01:06:58 +00:00
Ted Kremenek 3c6de496b0 Added raw_fd_ostream::close().
llvm-svn: 58052
2008-10-23 23:49:09 +00:00
Steve Naroff a6090204a1 Changes to make the Windows build work...
- Add a file to the VC++ project.
- Make sure the clang driver links against the Transforms library.
- Incorporate changes from patch by Dan Gohman.

llvm-svn: 58048
2008-10-23 23:28:23 +00:00
Evan Cheng d0d0317b9a Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.
llvm-svn: 58044
2008-10-23 20:43:13 +00:00
Dale Johannesen e395d78657 Mark defs and uses of CTR and LR correctly.
Prevents DeadMachineInstructionElim from thinking
things like MTCTR are dead (fixes massive
testsuite breakage at -O0).

llvm-svn: 58043
2008-10-23 20:41:28 +00:00
Daniel Dunbar f4be24686f Make sure to set stdout to binary when writing bitcode files via
std::ostream API.

llvm-svn: 58042
2008-10-23 19:37:34 +00:00
Duncan Sands 62951678ee Fix thinko - the operand number has nothing to do
with the result number.

llvm-svn: 58041
2008-10-23 19:34:23 +00:00
Argyrios Kyrtzidis cdc89ad215 Introduce INT64_C macro and unbreak LLVM on MSVC.
llvm-svn: 58039
2008-10-23 17:20:39 +00:00
Chris Lattner 9246c2c8e1 make this test not depend on how the system header defines memset.
llvm-svn: 58016
2008-10-23 00:24:51 +00:00
Daniel Dunbar 7f39e2d85a Change create*Pass factory functions to return Pass* instead of
LoopPass*.
 - Although less precise, this means they can be used in clients
   without RTTI (who would otherwise need to include LoopPass.h, which
   eventually includes things using dynamic_cast). This was the
   simplest solution that presented itself, but I am happy to use a
   better one if available.

llvm-svn: 58010
2008-10-22 23:32:42 +00:00
Ted Kremenek 5902794c8c Fix incorrect testing for the end of the both strings in CStrInCStrNoCase. This could cause a read-out-of-bounds error if s2 is smaller than s1.
llvm-svn: 58009
2008-10-22 23:16:52 +00:00
Jim Grosbach 1ecf1fd5c8 remove extraneous #ifdef's
llvm-svn: 58006
2008-10-22 22:27:51 +00:00
Daniel Dunbar 890d0deb74 Add raw_ostream versions of WriteBitcodeToFile and BitcodeWriterPass.
- The old versions are still hanging around, but should be migrated
   away from.

llvm-svn: 57989
2008-10-22 17:39:14 +00:00
Dale Johannesen f6655a9e79 Remove allocation of unused stack slot.
llvm-svn: 57987
2008-10-22 17:26:06 +00:00
Julien Lerouge e9de15b88a Fix for PR2881: fix a small leak exposed by valgrind, using a ManagedStatic.
llvm-svn: 57984
2008-10-22 16:30:41 +00:00
Gordon Henriksen e38d542d89 [PR2886] Ignore stderr from ocamlc since it prints unresolvable warnings on some platforms.
llvm-svn: 57976
2008-10-22 12:41:54 +00:00
Gordon Henriksen 9b601a4df8 Regenerate.
llvm-svn: 57975
2008-10-22 12:40:55 +00:00
Gordon Henriksen 2289eb89fb [PR2886] Don't look for ocaml's .opt executables; something in the autoconf/test machinery doesn't handle the period properly.
llvm-svn: 57974
2008-10-22 12:40:40 +00:00
Duncan Sands 8178141378 LegalizeTypes soft-float support for fpow.
llvm-svn: 57973
2008-10-22 11:49:09 +00:00
Duncan Sands 5ee1dde8fa Get this working with LegalizeTypes: (1) don't
assume that i64 has been turned into a BUILD_PAIR
node (when called from LegalizeTypes this hasn't
happened yet) and don't use a vector shuffle mask
with an illegal element type.

llvm-svn: 57972
2008-10-22 11:24:12 +00:00
Torok Edwin 822dcee526 Regenerate configure
llvm-svn: 57971
2008-10-22 09:56:27 +00:00
Argyrios Kyrtzidis 9e50bff478 Unbreak LLVM on the MSVC compiler:
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull

llvm-svn: 57970
2008-10-22 09:54:13 +00:00
Duncan Sands 685dcdc896 Use spaces rather than tab.
llvm-svn: 57969
2008-10-22 09:42:14 +00:00
Duncan Sands 578a68a91a Be nice to CellSPU: for this target getSetCCResultType
may return i8, which can result in SELECT nodes for
which the type of the condition is i8, but there are
no patterns for select with i8 condition.  Tweak the
LegalizeTypes logic to avoid this as much as possible.
This isn't a real fix because it is still perfectly
possible to end up with such select nodes - CellSPU
needs to be fixed IMHO.

llvm-svn: 57968
2008-10-22 09:23:20 +00:00
Duncan Sands 01a1c11218 Port from LegalizeDAG the logic to only generate
ADDC/ADDE/SUBC/SUBE if the target supports it.

llvm-svn: 57967
2008-10-22 09:07:29 +00:00
Duncan Sands a1a388cac3 Add some comments explaining the meaning of a boolean
that is not of type MVT::i1 in SELECT and SETCC nodes.
Relax the LegalizeTypes SELECT condition promotion
sanity checks to allow other condition types than i1.

llvm-svn: 57966
2008-10-22 09:06:24 +00:00
Duncan Sands 4b6b5fcd80 Temporarily allow the operands of a BUILD_VECTOR
to have a different type to the vector element
type.  This should be fairly harmless because in
the past guys like this were being built all over
the place (and were cleaned up when I added this
check).  The reason for relaxing this check is
that it helps LegalizeTypes legalize vector
shuffles: the mask is a BUILD_VECTOR that it is
*not always possible* to legalize while keeping it
a BUILD_VECTOR (vector_shuffle requires the mask
to be a BUILD_VECTOR, as opposed to a vector with
the right vector type).  With this check it is even
harder to legalize the mask - turning the check off
means that LegalizeTypes manages to legalize almost
all vector shuffles encountered in practice.  The
correct solution is to change vector_shuffle to be a
variadic node with the mask built into it as operands.
While waiting for that change, this hack stops the
problem with vector_shuffle from blocking the turning
on of LegalizeTypes.

llvm-svn: 57965
2008-10-22 09:00:33 +00:00
Chris Lattner 35b40f8c2f Fix PR2907 by digging through constant expressions to find FP constants that
are their operands.

llvm-svn: 57956
2008-10-22 04:53:16 +00:00
Daniel Dunbar 81b5fa5620 Move Print*Pass to use raw_ostream.
llvm-svn: 57946
2008-10-22 03:25:22 +00:00
Oscar Fuentes 64c996271e CMake: `make install' for libraries, executables and header files.
llvm-svn: 57945
2008-10-22 02:56:07 +00:00
Oscar Fuentes cac467ef44 CMake: use add_llvm_example for HowToUseJIT.
llvm-svn: 57944
2008-10-22 02:52:59 +00:00
Oscar Fuentes f3c03b02dc CMake: Turned some libraries into partially linked objects. Corrected
names of LLVMCore and ARMCodeGen.

llvm-svn: 57943
2008-10-22 02:51:53 +00:00
Dale Johannesen cf4607fcce Adjust comments for pedantic satisfaction.
llvm-svn: 57940
2008-10-22 00:02:32 +00:00
Bill Wendling 8286026700 Fix comment to name "TokenFactor" instead of "Token factor".
llvm-svn: 57939
2008-10-21 23:57:52 +00:00
Oscar Fuentes 7089213eec CMake: updated lib/VMCore/CMakeLists.txt
llvm-svn: 57937
2008-10-21 23:52:03 +00:00
Daniel Dunbar 54d5b9ea2c Privatize PrintModulePass and PrintFunctionPass and add
createPrintModulePass and createPrintFunctionPass.
 - So clients who compile w/o RTTI can use them.

llvm-svn: 57933
2008-10-21 23:33:38 +00:00
Dale Johannesen 3d7ece1acb Add comments to explain uint64->f64 algorithm,
well, sort of.  (Algorithm by Ian Ollmann.)

llvm-svn: 57932
2008-10-21 23:07:49 +00:00
Dale Johannesen 28929589e7 Add an SSE2 algorithm for uint64->f64 conversion.
The same one Apple gcc uses, faster.  Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.

llvm-svn: 57926
2008-10-21 20:50:01 +00:00
Dan Gohman 8b44b88eff Fix SelectionDAGBuild lowering of Select instructions to
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.

llvm-svn: 57925
2008-10-21 20:00:42 +00:00
Daniel Dunbar 1ca20df437 Clear raw_fd_ostream error string on success and explain behavior in
documentation.

Add C++ header marker.

llvm-svn: 57923
2008-10-21 19:53:10 +00:00
Dan Gohman c7d4f28254 Updated email address.
llvm-svn: 57920
2008-10-21 19:50:00 +00:00
Dan Gohman 4ddf7a4c22 Implement the optimized FCMP_OEQ/FCMP_UNE code for x86 fast-isel.
llvm-svn: 57915
2008-10-21 18:24:51 +00:00
Torok Edwin 016fa4cd0d Fix make check on Solaris 10/x86: the default grep is not GNU grep, same for as.
llvm-svn: 57912
2008-10-21 17:21:32 +00:00
Jim Grosbach cfebc18d7c use pre-UAL mnemonics for push/pop for compilaton callback function
llvm-svn: 57911
2008-10-21 16:54:12 +00:00
Nuno Lopes 94844e2054 fix a tricky bug in the JIT global variable emitter, that was triggered when JITing a variable independently of a function. This lead to sharing memory memory between functions and GVs thus changing the value of a GV could change the code in execution. more details on the ML.
llvm-svn: 57900
2008-10-21 11:42:16 +00:00
Ted Kremenek cdef990677 constify some methods and variables in ImmutableList.
llvm-svn: 57894
2008-10-21 05:59:33 +00:00
Chris Lattner 192f27cb5c really fix run line
llvm-svn: 57889
2008-10-21 03:55:19 +00:00
Chris Lattner b4ee2aebb5 fix run line
llvm-svn: 57888
2008-10-21 03:54:49 +00:00
Chris Lattner 0b641e4718 remove some unneeded eh generation
llvm-svn: 57887
2008-10-21 03:49:19 +00:00
Dan Gohman c14e5227f0 Disable constant-offset folding for PowerPC, as the PowerPC target
isn't yet prepared for it.

llvm-svn: 57886
2008-10-21 03:41:46 +00:00
Dan Gohman 269246b034 Don't create TargetGlobalAddress nodes with offsets that don't fit
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.

Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.

llvm-svn: 57885
2008-10-21 03:38:42 +00:00
Dan Gohman 97d95d6d85 Optimized FCMP_OEQ and FCMP_UNE for x86.
Where previously LLVM might emit code like this:

        ucomisd %xmm1, %xmm0
        setne   %al
        setp    %cl
        orb     %al, %cl
        jne     .LBB4_2

it now emits this:

        ucomisd %xmm1, %xmm0
        jne     .LBB4_2
        jp      .LBB4_2

It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.

To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.

Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.

llvm-svn: 57873
2008-10-21 03:29:32 +00:00
Dan Gohman c835458da9 When the coalescer is doing rematerializing, have it remove
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.

Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.

These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.

llvm-svn: 57872
2008-10-21 03:24:31 +00:00
Dan Gohman 97d3f6cfe3 Make the NaN test come second, heuristically assuming
that NaNs are less common.

llvm-svn: 57871
2008-10-21 03:12:54 +00:00
Dan Gohman 72e66eedb8 Use Function::getEntryBlock() instead of Function::front(), for clarity.
llvm-svn: 57870
2008-10-21 03:10:28 +00:00
Oscar Fuentes 0e12e5b12c CMake: updated lib/CodeGen/CMakeLists.txt
llvm-svn: 57869
2008-10-21 02:37:50 +00:00
Dan Gohman fa29b67aee Fix a bug that prevented llvm-extract -delete from working.
llvm-svn: 57864
2008-10-21 01:08:07 +00:00
Chris Lattner 4396e0d2c3 Fix gcc.c-torture/compile/920520-1.c by inserting bitconverts
for strange asm conditions earlier.  In this case, we have a
double being passed in an integer reg class.  Convert to like
sized integer register so that we allocate the right number 
for the class (two i32's for the f64 in this case).

llvm-svn: 57862
2008-10-21 00:45:36 +00:00
Evan Cheng 7e721ecd21 Add skeleton for the pre-register allocation live interval splitting pass.
llvm-svn: 57847
2008-10-20 21:44:59 +00:00
Jim Grosbach 9396051e3d Update the stub and callback code to handle lazy compilation. The stub
is re-written by the callback to branch directly to the compiled code
in future invocations.

Added back in range-based memory permission functions for the updating of
the stub on Darwin.

llvm-svn: 57846
2008-10-20 21:39:23 +00:00
Dan Gohman 1a59b3b9b8 Fast-isel no longer an experiment.
llvm-svn: 57845
2008-10-20 21:30:12 +00:00
Evan Cheng bc623edaba Add a register class -> virtual registers map.
llvm-svn: 57844
2008-10-20 20:03:28 +00:00
Evan Cheng b660409c7d This forward declaration is unnecessary.
llvm-svn: 57843
2008-10-20 20:02:17 +00:00
Duncan Sands aac74a9055 Support operations like fp_to_uint with a vector
result type when the result type is legal but
not the operand type.  Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.

llvm-svn: 57840
2008-10-20 16:31:21 +00:00
Duncan Sands d28e8ff804 Teach getTypeToTransformTo to return something
sensible for vectors being scalarized.  Note
that this method can't return anything very
sensible when splitting non-power-of-two vectors.

llvm-svn: 57839
2008-10-20 16:24:25 +00:00
Duncan Sands e0fb87acf6 LegalizeTypes support for atomic operation promotion.
llvm-svn: 57838
2008-10-20 16:17:42 +00:00
Duncan Sands 840143fc6f Use DAG.getIntPtrConstant rather than DAG.getConstant
with TLI.getPointerTy for a small simplification.

llvm-svn: 57837
2008-10-20 16:14:43 +00:00
Duncan Sands 5805334d5b Always use either MVT::i1 or getSetCCResultType for
the condition of a SELECT node.  Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.

llvm-svn: 57836
2008-10-20 16:13:04 +00:00
Duncan Sands fe9b5550de Formatting - no functional change.
llvm-svn: 57834
2008-10-20 16:06:47 +00:00
Duncan Sands 3ed8b29ace Don't use a random type for the select condition,
use an MVT::i1 and simplify the code while there.

llvm-svn: 57833
2008-10-20 16:04:57 +00:00
Dan Gohman afed8590f0 Fix a typo in a comment.
llvm-svn: 57832
2008-10-20 15:58:02 +00:00
Duncan Sands 1d20ab5784 Have X86 custom lowering for LegalizeTypes use
LowerOperation if it doesn't know what else to do.
This methods should probably be factorized some,
but this is good enough for the moment.  Have
LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather
than assuming the operand is a BUILD_PAIR (if it
is then getNode will automagically simplify the
EXTRACT_ELEMENT).  This way LowerATOMIC_BINARY_64
usable from LegalizeTypes.

llvm-svn: 57831
2008-10-20 15:56:33 +00:00
Matthijs Kooijman 2225299eec Fix typo in a comment.
llvm-svn: 57829
2008-10-20 11:24:57 +00:00
Matthijs Kooijman 6d833160a5 Remove another stale comment.
llvm-svn: 57828
2008-10-20 11:23:18 +00:00
Matthijs Kooijman f9b89bc030 Remove an inappropriate (probably outdated) comment.
llvm-svn: 57827
2008-10-20 11:21:12 +00:00
Matthijs Kooijman 3abb308878 Fix spelling error.
llvm-svn: 57820
2008-10-20 08:45:34 +00:00
Bill Wendling 8ec2a4a96c Set N->OperandList to 0 after deletion. Otherwise, it's possible that it will
be either deleted or referenced afterwards.

llvm-svn: 57786
2008-10-19 20:51:12 +00:00
Bill Wendling 6c87bfc6fd Fix comment. Other formatting changes. No functionality changes.
llvm-svn: 57785
2008-10-19 20:34:04 +00:00
Duncan Sands 8d11adca4c Vector shuffle mask elements may be "undef". Handle
this everywhere in LegalizeTypes.

llvm-svn: 57783
2008-10-19 15:00:25 +00:00
Duncan Sands c6d12bd665 Use a legal integer type for vector shuffle mask
elements.  Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).

llvm-svn: 57782
2008-10-19 14:58:05 +00:00
Chris Lattner 160e8abd77 Reapply r57699 with a fix to not crash on asms with multiple results. Unlike
the previous patch this one actually passes make check.

"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."

llvm-svn: 57771
2008-10-18 18:49:30 +00:00
Dan Gohman 727a94063c Don't truncate GlobalAddress offsets to int in debug output.
llvm-svn: 57770
2008-10-18 18:22:42 +00:00
Evan Cheng 2dadd3bbc6 By min, I mean max.
llvm-svn: 57766
2008-10-18 05:21:37 +00:00
Evan Cheng ac4e70d946 When creating intervals, leave min(1, numdefs) holes after each instruction.
llvm-svn: 57765
2008-10-18 05:18:55 +00:00
Mon P Wang 446218462b Make llvm memory barrier available as an intrinsic
llvm-svn: 57750
2008-10-18 02:48:13 +00:00
Dan Gohman 2fe6bee5b6 Teach DAGCombine to fold constant offsets into GlobalAddress nodes,
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)

This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.

This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.

Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.

The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.

llvm-svn: 57748
2008-10-18 02:06:02 +00:00
Dan Gohman 6de2556205 Revert r57699. It's causing regressions in
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.

llvm-svn: 57747
2008-10-18 01:03:45 +00:00
Dan Gohman 83876cd9b0 Use the opcode predicates, instead of duplicating the code.
llvm-svn: 57735
2008-10-17 21:42:45 +00:00
Dan Gohman 209fc26462 This is now partly done.
llvm-svn: 57734
2008-10-17 21:39:27 +00:00
Dan Gohman b1d8d6ecff This is done.
llvm-svn: 57733
2008-10-17 21:38:40 +00:00
Dan Gohman d01ddb51ee Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.

llvm-svn: 57726
2008-10-17 21:16:08 +00:00
Evan Cheng 0fcc89b596 Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.
llvm-svn: 57723
2008-10-17 21:02:22 +00:00
Evan Cheng 010e9b0760 Add RCBarriers to TargetInstrDesc. It's a list of register classes the given instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.
TableGen has been taught to generate the lists from instruction definitions.

llvm-svn: 57722
2008-10-17 21:00:09 +00:00
Evan Cheng 94169f1021 Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
Patch by Lang Hames!

llvm-svn: 57720
2008-10-17 20:56:41 +00:00
Chris Lattner aadf7414b2 add support for 128 bit aggregates.
llvm-svn: 57715
2008-10-17 19:59:51 +00:00
Bill Wendling fe9e2c587d The Dwarf writer was comparing mangled and unmangled names for C++ code when we
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.

Oh! for a good debug info architecture!

llvm-svn: 57714
2008-10-17 18:48:57 +00:00
Mon P Wang 85f48ade9c Added MemIntrinsicNode which is useful to represent target intrinsics that
touches memory and need an associated MemOperand

llvm-svn: 57712
2008-10-17 18:22:58 +00:00
Dan Gohman 293abcc91d Factor out the code for mapping LLVM IR condition opcodes to
ISD condition opcodes into helper functions.

llvm-svn: 57710
2008-10-17 18:18:45 +00:00
Chris Lattner 8e2ef196ae add support for 128 bit inputs on both x86-64 and x86-32.
llvm-svn: 57709
2008-10-17 18:15:05 +00:00
Chris Lattner c7e65f4377 Fix a bug where the x86 backend would reject 64-bit r constraints when
in 32-bit mode instead of assigning a register pair.  This has nothing to
do with PR2356, but I happened to notice it while working on it.

llvm-svn: 57704
2008-10-17 17:59:52 +00:00
Chris Lattner 052092bf9c Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.

llvm-svn: 57699
2008-10-17 17:52:49 +00:00
Chris Lattner 00c5d69998 remove an xfailed test.
llvm-svn: 57695
2008-10-17 17:26:48 +00:00
Chris Lattner e212b970cf remove this test: it is xfailed anyway, and is failing for a reason
other than why it was xfailed.

llvm-svn: 57694
2008-10-17 17:26:19 +00:00
Evan Cheng 27c3702267 Fix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except they do not have any operands. The RegModRM byte is encoded with register number 0.
llvm-svn: 57692
2008-10-17 17:14:20 +00:00
Evan Cheng 9e23d746bf getX86RegNum has long been moved to X86RegisterInfo.
llvm-svn: 57691
2008-10-17 17:12:18 +00:00
Chris Lattner 3b1833c9b4 refactor some code into a helper method, no functionality change.
llvm-svn: 57690
2008-10-17 17:05:25 +00:00
Chris Lattner 860df6e84c Keep track of *which* input constraint matches an output
constraint.  Reject asms where an output has multiple
input constraints tied to it.

llvm-svn: 57687
2008-10-17 16:47:46 +00:00
Chris Lattner ef8901722e add an assert so that PR2356 explodes instead of running off an
array.  Improve some minor comments, refactor some helpers in
AsmOperandInfo.  No functionality change for valid code.

llvm-svn: 57686
2008-10-17 16:21:11 +00:00
Gabor Greif ca01496e59 remove spurious space in link
llvm-svn: 57677
2008-10-17 14:43:58 +00:00
Gabor Greif 97966407d0 Add comment on how tagged pointers are
distinguished from normal (untagged) ones
as per review comment.

I am sufficiently unaquainted with doxygen to
defer the markup to someone with more experience.

llvm-svn: 57676
2008-10-17 08:31:36 +00:00
Evan Cheng 08acb24225 Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.
llvm-svn: 57673
2008-10-17 06:16:07 +00:00
Chris Lattner 7e9e3b3d4b add some simple hacky long double support for the CBE. This
should work for intel long double, but ppc long double aborts
in convert.

llvm-svn: 57672
2008-10-17 06:11:48 +00:00
Dan Gohman 10549c29a8 Use INT64_C to emit constant values, to avoid problems with
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.

llvm-svn: 57668
2008-10-17 04:40:39 +00:00
Dan Gohman ca0546facc Fun x86 encoding tricks: when adding an immediate value of 128,
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.

A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.

To support this, teach tablegen how to handle 64-bit constants.

llvm-svn: 57663
2008-10-17 01:33:43 +00:00
Dan Gohman a39b0a1f05 Define patterns for shld and shrd that match immediate
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.

Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.

Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.

These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.

llvm-svn: 57662
2008-10-17 01:23:35 +00:00
Dan Gohman 215742a966 Use 0 instead of false to return a null pointer.
llvm-svn: 57660
2008-10-17 00:56:52 +00:00
Dan Gohman 016f16daf1 Fix this test so it actually runs the grep lines.
llvm-svn: 57653
2008-10-16 23:57:54 +00:00
Dan Gohman e33afda4fa Trim #includes.
llvm-svn: 57649
2008-10-16 20:18:31 +00:00
Chris Lattner ba88d86a65 fix typo noticed by sdt
llvm-svn: 57644
2008-10-16 17:02:50 +00:00
Gabor Greif 0bd120e817 Introduce a typing refinenement on tagged data
using the 'volatile' qualifier. This should not have any operational consequences
on code, because tags should always be stripped off (giving a non-volatile pointer)
before dereferencing. The new qualification is there to catch some attempts to use
tagged pointers in a context where an untagged pointer is appropriate.

Notably this approach does not catch dereferencing of tagged pointers, but helps
in separating the two concepts a bit.

llvm-svn: 57641
2008-10-16 15:33:02 +00:00
Mikhail Glushenkov 35945b6af2 Re-apply Makefile changes. Fix build with srcdir != objdir.
llvm-svn: 57636
2008-10-16 14:02:29 +00:00
Duncan Sands dc84511146 Fix warnings about mb/me being potentially used
uninitialized in these functions with gcc-4.3.

llvm-svn: 57635
2008-10-16 13:02:33 +00:00
Duncan Sands 1c7f8901c6 Fix "large integer implicitly truncated to unsigned type"
warning on x86-64 with gcc-4.3.

llvm-svn: 57634
2008-10-16 09:14:58 +00:00
Duncan Sands 7451f87273 Testcase for PR2762.
llvm-svn: 57633
2008-10-16 08:56:46 +00:00
Chris Lattner 305fb0a7ba add some notes
llvm-svn: 57631
2008-10-16 07:04:06 +00:00
Chris Lattner 29628cc5da add some notes and a file to collect unimplemented features in the
x86 backend.  These will all be answered with "patches welcome", so
a PR doesn't help drive them along.

llvm-svn: 57630
2008-10-16 06:46:12 +00:00
Chris Lattner 122c9b1b22 mark some targets as experimental. Andrew, if you think that Alpha is
basically working, feel free to remove the tag.  The other targets have
really basic things that break them.

llvm-svn: 57628
2008-10-16 06:16:50 +00:00