Commit Graph

22065 Commits

Author SHA1 Message Date
Evan Cheng a7bfbe996e Two peepholes:
(or (x >> c) | (y << (32 - c))) ==> (shrd x, y, c)
(or (x << c) | (y >> (32 - c))) ==> (shld x, y, c)

llvm-svn: 25438
2006-01-19 01:56:29 +00:00
Evan Cheng acec02ebf5 Prevent unnecessary CopyToReg when the same HW register appears in two spots
in the pattern.

llvm-svn: 25437
2006-01-19 01:55:45 +00:00
Evan Cheng 6135a7a546 Didn't mean to check that in.
llvm-svn: 25436
2006-01-19 01:52:56 +00:00
Evan Cheng 267ba5965e A obvious typo
llvm-svn: 25435
2006-01-19 01:46:14 +00:00
Reid Spencer c8a9fafcfc Make sure intrinsic auto-upgrade is invoked correctly.
llvm-svn: 25434
2006-01-19 01:21:04 +00:00
Reid Spencer f8592bdea5 Don't accept the ctpop, cttz, or ctlz intrinsics with signed arguments. The
interface requires unsigned arguments.

llvm-svn: 25433
2006-01-19 01:20:03 +00:00
Reid Spencer e0aa7c7ded Add a new interface function to AutoUpgrade for simultaneously upgrading
the Function and the CallInst: UpgradeCallsToIntrinsic(Function*). Also,
re-factor the AutoUpgrade implementation to eliminate some duplication of
code.

llvm-svn: 25432
2006-01-19 01:18:29 +00:00
Reid Spencer e64af05eed Expand test to cover the non-overloaded variants of the arithmetic and
floating point intrinsics.

llvm-svn: 25431
2006-01-19 01:17:06 +00:00
Chris Lattner 7be2203c9f If not internalizing, don't mark llvm.global[cd]tors const, as a fix for a
hypothetical future boog.

llvm-svn: 25430
2006-01-19 00:46:54 +00:00
Chris Lattner d693b7943a Don't internalize llvm.global[cd]tor unless there are uses of it. This
unbreaks front-ends that don't use __main (like the new CFE).

llvm-svn: 25429
2006-01-19 00:40:39 +00:00
Andrew Lenharth 7599b6e4af was ignoring the legalized chain in this case, fixed SPASS on alpha
llvm-svn: 25428
2006-01-18 23:19:08 +00:00
Andrew Lenharth 88f3d3f893 a reduced test case, the GlobalAddress is never legalized
llvm-svn: 25427
2006-01-18 22:59:33 +00:00
Nate Begeman 569c439567 Get rid of code in the DAGCombiner that is duplicated in SelectionDAG.cpp
Now all constant folding in the code generator is in one place.

llvm-svn: 25426
2006-01-18 22:35:16 +00:00
Chris Lattner e2ee190821 Temporary work around for a libcall insertion bug: If a target doesn't
support FSIN/FCOS nodes, do not lower sin/cos to them.

llvm-svn: 25425
2006-01-18 21:50:14 +00:00
Chris Lattner b98282d2d6 Make sure that cloning a module clones its target triple and dependent
library list as well.  This should help bugpoint.

llvm-svn: 25424
2006-01-18 21:32:45 +00:00
Chris Lattner ce5066c863 Don't assert on 'select_cc SETUO'
llvm-svn: 25423
2006-01-18 19:42:35 +00:00
Chris Lattner 36eba3a49b fix out of date comment
llvm-svn: 25422
2006-01-18 19:37:44 +00:00
Chris Lattner 15e7642ab1 Fix Regression/CodeGen/PowerPC/2006-01-18-InvalidBranchOpcodeAssert.ll
llvm-svn: 25421
2006-01-18 19:35:21 +00:00
Chris Lattner 48e653ea88 new testcase
llvm-svn: 25420
2006-01-18 19:16:07 +00:00
Chris Lattner 5fee908be5 Fix a backwards conditional that caused an inf loop in some cases. This
fixes: test/Regression/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll

llvm-svn: 25419
2006-01-18 19:13:41 +00:00
Chris Lattner 4d148f2ece this testcase sent the dag combiner spinning into an infinite loop
llvm-svn: 25418
2006-01-18 19:13:11 +00:00
Jim Laskey 194a5268cb Added minimum Dwarf aranges. Cleaned up some section headers. Line number
support now works in gdb.

llvm-svn: 25417
2006-01-18 16:54:26 +00:00
Evan Cheng 621674a19d SRA shift amount must be in i8
llvm-svn: 25416
2006-01-18 09:26:46 +00:00
Evan Cheng 4b3774e0a2 If a call return type is i1, insert a truncate from X86::AL to i1.
llvm-svn: 25415
2006-01-18 08:08:38 +00:00
John Criswell 0e9bd5a416 Fixed style of curly brace. No functionality changes.
llvm-svn: 25414
2006-01-17 22:01:57 +00:00
Evan Cheng feaed4d107 Fix lowering of calls which return f32 values.
llvm-svn: 25413
2006-01-17 21:58:21 +00:00
Jim Laskey 5e131f8d31 Pastos.
llvm-svn: 25412
2006-01-17 21:39:39 +00:00
Chris Lattner dce31c8d70 fix a broken comment
llvm-svn: 25411
2006-01-17 21:31:18 +00:00
Jim Laskey cc9dfecf81 Add frame work for additional dwarf sections. Comments will improve as code
is added.

llvm-svn: 25410
2006-01-17 20:41:40 +00:00
Robert Bocchino 1763a44ac2 Test case for the insertelement operation.
llvm-svn: 25409
2006-01-17 20:07:30 +00:00
Robert Bocchino ca27f0320b VMCore support for the insertelement operation.
llvm-svn: 25408
2006-01-17 20:07:22 +00:00
Robert Bocchino e6336a9b69 Constant folding support for the insertelement operation.
llvm-svn: 25407
2006-01-17 20:07:07 +00:00
Robert Bocchino 6dce25019d Lowerpacked and SCCP support for the insertelement operation.
llvm-svn: 25406
2006-01-17 20:06:55 +00:00
Robert Bocchino 03e95af9f7 Support for the insertelement operation.
llvm-svn: 25405
2006-01-17 20:06:42 +00:00
Robert Bocchino c744cbe160 Reader support for the insertelement operation.
llvm-svn: 25404
2006-01-17 20:06:35 +00:00
Robert Bocchino fdf9e41848 Lexer and parser support for the insertelement operation.
llvm-svn: 25403
2006-01-17 20:06:25 +00:00
Robert Bocchino b52d0a3415 Instruction and constant expression definitions for the insertelement
operation.

llvm-svn: 25402
2006-01-17 20:05:59 +00:00
Evan Cheng 6f86a7db07 Bug fix: missing LegalizeOp() on newly created nodes.
llvm-svn: 25401
2006-01-17 19:47:13 +00:00
Evan Cheng d1a23c10f2 Suppress "no newline at end of file" warnings.
llvm-svn: 25400
2006-01-17 19:21:01 +00:00
Jim Laskey b125003bf4 Misc. errors.
llvm-svn: 25399
2006-01-17 19:12:24 +00:00
Chris Lattner 801f47512d Clean up the FFS optimization code, and make it correctly create the appropriate
unsigned llvm.cttz.* intrinsic, fixing the 2005-05-11-Popcount-ffs-fls regression
last night.

llvm-svn: 25398
2006-01-17 18:27:17 +00:00
Jim Laskey b9966029fe Adding basic support for Dwarf line number debug information.
I promise to keep future commits smaller.

llvm-svn: 25396
2006-01-17 17:31:53 +00:00
Jim Laskey f9978d8a0b Adding UniqueVector.
llvm-svn: 25395
2006-01-17 17:29:20 +00:00
John Criswell 5ed803256d Regenerated the Lex and Yacc output files on Linux. It seems that our
Linux machines don't like the source code generated on MacOS X for some
reason.

llvm-svn: 25394
2006-01-17 17:01:34 +00:00
Jim Laskey d7767aa87b Reduce memory consumption and force (somewhat) access to entries via ID.
llvm-svn: 25393
2006-01-17 16:29:58 +00:00
Evan Cheng 61864ec3fe Emit a type matching check for ComplexPatterns.
llvm-svn: 25392
2006-01-17 07:36:41 +00:00
Evan Cheng 14417ed99c Zero extending load from i1 to i8.
llvm-svn: 25391
2006-01-17 07:02:46 +00:00
Chris Lattner 514a8f89d0 Ensure that the CFE always emits intrinsics in their unsigned version, not with signed operands
llvm-svn: 25390
2006-01-17 06:24:01 +00:00
Jeff Cohen 234e078947 Visual Studio still has issues with being left out.
llvm-svn: 25389
2006-01-17 05:13:22 +00:00
Duraid Madina e08a95d3c1 oops, this shouldn't have gotten in
llvm-svn: 25388
2006-01-17 03:09:48 +00:00
Evan Cheng 0d5b69f734 SSE does not support i64 SINT_TO_FP (FP stack doesn't either, but we custom
expand it), so ask legalizer to expand i32 UINT_TO_FP.

llvm-svn: 25386
2006-01-17 02:32:49 +00:00
Duraid Madina 266ff6056a use proper (82-bit) spills/fills when spilling FP regs, so that
divides don't get broken. this fixes obsequi, smg2000, and probably
a bunch of other stuff (tm)

llvm-svn: 25385
2006-01-17 02:04:52 +00:00
Duraid Madina c261469ad9 fixing divides
llvm-svn: 25383
2006-01-17 01:19:49 +00:00
Chris Lattner c9fbba6fc0 Revert this, I didn't mean to commit it
llvm-svn: 25382
2006-01-17 00:40:24 +00:00
Evan Cheng 561881f30a Added a FIXME comment about why FST is currently flagged to fpGETRESULT.
llvm-svn: 25381
2006-01-17 00:37:42 +00:00
Evan Cheng a1bb8dbbc3 Yet another getTargetNode() variant. I promise one of these days I'll fix
tblgen so this is unnecessary.

llvm-svn: 25380
2006-01-17 00:32:38 +00:00
Chris Lattner f64762c26e Add support for programs with a null argv[0]
llvm-svn: 25379
2006-01-17 00:32:28 +00:00
Evan Cheng bec9d720b0 Bug fixes: fpGETRESULT should produces a flag result and X86ISD::FST should
read a flag.

llvm-svn: 25378
2006-01-17 00:19:47 +00:00
Jim Laskey 0a15089ad0 Redundant inline keyword.
llvm-svn: 25377
2006-01-16 23:44:03 +00:00
Jim Laskey d15694b8db UniqueVector template provides a means of enumerating objects uniquely.
llvm-svn: 25376
2006-01-16 23:29:43 +00:00
Evan Cheng c14bb1026b More typo's
llvm-svn: 25375
2006-01-16 23:26:53 +00:00
Evan Cheng 64eeed27d9 Some typo's
llvm-svn: 25374
2006-01-16 22:48:46 +00:00
Chris Lattner 069b5bda5a like bswap, the ct* intrinsics require unsigned operands
llvm-svn: 25373
2006-01-16 22:38:59 +00:00
Chris Lattner b748c674a9 Consistency
llvm-svn: 25372
2006-01-16 22:34:14 +00:00
Andrew Lenharth cfd9c6e526 fix short immediate loads
llvm-svn: 25371
2006-01-16 21:41:39 +00:00
Andrew Lenharth 4aa90b347f this is fixed
llvm-svn: 25370
2006-01-16 21:22:42 +00:00
Andrew Lenharth 34380b7675 stack and rpcc
llvm-svn: 25369
2006-01-16 21:22:38 +00:00
Evan Cheng 911c68d7a8 Fix FP_TO_INT**_IN_MEM lowering.
llvm-svn: 25368
2006-01-16 21:21:29 +00:00
Reid Spencer 2a9012b17e There is no llvm.bswap.i8, need at least 2 bytes to swap.
llvm-svn: 25367
2006-01-16 21:14:01 +00:00
Reid Spencer b4f9a6f110 For PR411:
This patch is an incremental step towards supporting a flat symbol table.
It de-overloads the intrinsic functions by providing type-specific intrinsics
and arranging for automatically upgrading from the old overloaded name to
the new non-overloaded name. Specifically:
  llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64
  llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64
  llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64
  llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64
  llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64
New code should not use the overloaded intrinsic names. Warnings will be
emitted if they are used.

llvm-svn: 25366
2006-01-16 21:12:35 +00:00
Reid Spencer 84c00ea718 For PR411:
This file makes the helper functions for auto-upgrade of llvm assembly and
bytecode more accessible. This is part of de-overloading of intrinsic
functions to support the flat symbol table (no type planes).

llvm-svn: 25365
2006-01-16 21:06:01 +00:00
Andrew Lenharth 81b108c54d Friendly names
llvm-svn: 25364
2006-01-16 19:53:25 +00:00
Chris Lattner 307b7ea15f fix a crash due to missing parens
llvm-svn: 25363
2006-01-16 19:47:21 +00:00
Chris Lattner 7c76290038 add notes from my *other* email acct.
llvm-svn: 25362
2006-01-16 17:58:54 +00:00
Chris Lattner b2eacf48aa transfer some notes from my email to somewhere useful.
llvm-svn: 25361
2006-01-16 17:53:00 +00:00
Chris Lattner 45496f0beb Fix these testcases :(
Apparently Andrew hasn't implemented ReadCycleCounter in the new isel and
renamed ornot to eqv

llvm-svn: 25360
2006-01-16 16:34:39 +00:00
Chris Lattner 63f29c6905 Add a couple very minor tweaks
llvm-svn: 25359
2006-01-16 16:31:40 +00:00
Duraid Madina e995910e64 fixing divides: FP should now be 100%, and integers are fine too
unless you try to div/mod 0 by anything, in which case you will
get some cute number, and not 0, which is bad.

llvm-svn: 25358
2006-01-16 14:33:04 +00:00
Nate Begeman 1e1eb5ee6c Constant fold ctpop/ctlz/cttz, and a couple other small cleanups
llvm-svn: 25357
2006-01-16 08:07:10 +00:00
Nate Begeman 2642a35f4c Expand case for 64b Legalize, even though no one should end up using this
(itanium supports bswap natively, alpha should custom lower it using the
VAX floating point swapload, ha ha).

llvm-svn: 25356
2006-01-16 07:59:13 +00:00
Nate Begeman 7d831fa5b9 Add BSWAP stuff to intrinsic lowering for CBE & friends.
llvm-svn: 25355
2006-01-16 07:57:00 +00:00
Nate Begeman 024348e20b Fix up 'adding an intrinsic' section a bit, first draft of 'adding a new
sdnode' section.

llvm-svn: 25354
2006-01-16 07:54:23 +00:00
Duraid Madina ba187774fe fix division! again!! pattern isel, prepare to die.
llvm-svn: 25353
2006-01-16 06:33:38 +00:00
Chris Lattner e636ba84b5 Silly Sparc is big endian. If we have to load args out of incoming stack slots
that are smaller than an int, make sure to adjust the frame pointer to take
this into consideration.

llvm-svn: 25351
2006-01-16 01:40:00 +00:00
Chris Lattner fe5cb66e9d This pass has been removed.
llvm-svn: 25350
2006-01-16 01:06:43 +00:00
Chris Lattner 0de2c7d3d8 This pass has never worked correctly. Remove.
llvm-svn: 25349
2006-01-16 01:06:00 +00:00
Chris Lattner 93f72dce59 Remove a never-working pass
llvm-svn: 25348
2006-01-16 01:05:24 +00:00
Chris Lattner 070024a2f9 PRE is no more
llvm-svn: 25347
2006-01-16 01:05:00 +00:00
Chris Lattner 9d41ecc95b Make sure that bool,byte and short arguments are the right type when loaded
from memory.

llvm-svn: 25346
2006-01-15 22:22:01 +00:00
Chris Lattner 087bb703d7 Thanks to Daniel Berlin's ETForest fix, we can now use it again for the verifier
llvm-svn: 25345
2006-01-15 21:58:50 +00:00
Chris Lattner f41846c35b Initialize DFSnum's to -1, in case a node is not reachable.
llvm-svn: 25344
2006-01-15 21:48:36 +00:00
Chris Lattner f49025dccc add an assert, patch by Daniel Berlin
llvm-svn: 25343
2006-01-15 21:46:23 +00:00
Robert Bocchino f72fdfe252 Added spec for insertelement operation.
llvm-svn: 25342
2006-01-15 20:48:27 +00:00
Chris Lattner 9a7e6c7ae0 ET-Forest has issues with unreachable blocks. Temporarily disable verifiers use
of it until they are resolved.

llvm-svn: 25341
2006-01-15 20:00:51 +00:00
Chris Lattner 53312c6342 Disable a broken optimization
llvm-svn: 25340
2006-01-15 19:15:46 +00:00
Chris Lattner fcdb420baf Disable two transformations that contribute to bus errors on SparcV8.
llvm-svn: 25339
2006-01-15 18:58:59 +00:00
Evan Cheng 2494ce49f0 Added patterns for 8-bit multiply
llvm-svn: 25338
2006-01-15 10:05:20 +00:00
Evan Cheng a039d439dc Type inferencing bug
llvm-svn: 25337
2006-01-15 10:04:45 +00:00
Duraid Madina c8817d2857 explain that r12 is the stack pointer reg
llvm-svn: 25336
2006-01-15 09:45:23 +00:00
Chris Lattner e96523474b Don't print a label for the first MBB in a function.
Compile this:

%_2E_str_8 = external global [75 x sbyte]
implementation   ; Functions:
declare int %printf(sbyte*, ...)
void %test()
        %tmp.101 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([75 x sbyte]* %_2E_str_8, int 0, int 0) )             ; <int> [#uses=0]
        unreachable
}

to this:

main_endif_2E_8:
        save -96, %o6, %o6
        sethi %hi(_2E_str_8), %l0
        add %l0, %lo(_2E_str_8), %o0
        call printf
        nop

instead of this:

main_endif_2E_8:
        save -96, %o6, %o6
        sethi %hi(_2E_str_8), %l0
        or %g0, %lo(_2E_str_8), %l1   ;; extra instruction
        add %l1, %l0, %o0
        call printf
        nop

llvm-svn: 25335
2006-01-15 09:26:27 +00:00
Chris Lattner 5bd514d7b0 Use the default impl of DYNAMIC_STACKALLOC, allowing us to delete some code.
llvm-svn: 25334
2006-01-15 09:02:48 +00:00
Chris Lattner 78c358d1ad Use the default lowering of ISD::DYNAMIC_STACKALLOC, delete now dead code.
llvm-svn: 25333
2006-01-15 09:00:21 +00:00
Chris Lattner aea3cccd55 Have legalize take care of DYNAMIC_STACKALLOC for us, implement llvm.stacksave/stackrestore.
llvm-svn: 25332
2006-01-15 08:55:25 +00:00
Chris Lattner 59b82f9848 Allow the target to specify 'expand' if they just require the amount to
be subtracted from the stack pointer.

llvm-svn: 25331
2006-01-15 08:54:32 +00:00
Chris Lattner c5101b4ffa Implement DYNAMIC_STACKALLOC for V8
llvm-svn: 25330
2006-01-15 08:43:57 +00:00
Chris Lattner 2d59142613 Fix custom lowering of dynamic_stackalloc
llvm-svn: 25329
2006-01-15 08:43:08 +00:00
Chris Lattner 5186bd8312 add a missing break that Reid noticed.
llvm-svn: 25328
2006-01-15 08:40:16 +00:00
Chris Lattner 9597b33d58 add a missing node name
llvm-svn: 25327
2006-01-15 08:39:35 +00:00
Chris Lattner e5ca28b74d reorder passes
llvm-svn: 25326
2006-01-15 07:19:53 +00:00
Chris Lattner 02011c9a4f Token chain results are not always the first or last result. Consider copyfromreg nodes, where they are the middle result (the flag result is last)
llvm-svn: 25325
2006-01-14 22:41:46 +00:00
Chris Lattner c17b41c3ba Cleanup IA64ISD, tell the graph drawer what the symbolic names for the enums are.
llvm-svn: 25324
2006-01-14 22:27:21 +00:00
Chris Lattner c020bcf850 Change ET-Forest to automatically recalculate its DFSnum's if too many slow
queries are made.

Patch by Daniel Berlin!

llvm-svn: 25323
2006-01-14 20:55:09 +00:00
Chris Lattner 8869c6f782 silence a warning
llvm-svn: 25322
2006-01-14 20:11:13 +00:00
Chris Lattner f6d6823f09 Let the inliner update the callgraph to reflect the changes it makes, instead
of doing it ourselves.  This fixes Transforms/Inline/2006-01-14-CallGraphUpdate.ll

llvm-svn: 25321
2006-01-14 20:09:18 +00:00
Chris Lattner 0841fb1d4c Teach the inliner to update the CallGraph itself, and have it add edges to
llvm.stacksave/restore when it inserts calls to them.

llvm-svn: 25320
2006-01-14 20:07:50 +00:00
Chris Lattner 7eb2947546 New testcase for a regression last night: the -inline pass wasn't updating
callgraph to include new edges do to inserted llvm.stacksave/llvm.stackrestore
calls.

llvm-svn: 25319
2006-01-14 20:07:07 +00:00
Chris Lattner a1128c23d1 Teach inline function how to update the callgraph when it makes changes.
llvm-svn: 25318
2006-01-14 20:05:06 +00:00
Chris Lattner 00ca8d2de8 Add a new CallGraph::getOrInsertFunction for clients to use when updating
the callgraph.

llvm-svn: 25317
2006-01-14 20:03:00 +00:00
Chris Lattner b332156c1e Add CallGraph::getOrInsertFunction, to allow clients to update the callgraph
when they change the program

llvm-svn: 25316
2006-01-14 20:01:50 +00:00
Chris Lattner ef530c24c1 FunctionPass's cannot do IPO things.
llvm-svn: 25315
2006-01-14 19:30:35 +00:00
Chris Lattner bc351e171f add a dump method to CallGraph
llvm-svn: 25314
2006-01-14 19:17:02 +00:00
Nate Begeman 542c3c17a9 Remove some duplicated code
llvm-svn: 25313
2006-01-14 03:18:27 +00:00
Nate Begeman 2fba8a3aaa bswap implementation
llvm-svn: 25312
2006-01-14 03:14:10 +00:00
Jeff Cohen 8f8504b3c6 Fix generous source of VC++ truncation warnings.
llvm-svn: 25311
2006-01-14 02:17:20 +00:00
Nate Begeman f6b7dd7ca9 Fix the instructions for adding an intrinsic.
llvm-svn: 25310
2006-01-14 01:27:10 +00:00
Nate Begeman 82049eba2c Add bswap intrinsics as documented in the Language Reference
llvm-svn: 25309
2006-01-14 01:25:24 +00:00
Nate Begeman f2b38dbdc7 Remove some redundant stuff out of the readme.
llvm-svn: 25308
2006-01-14 01:24:22 +00:00
Evan Cheng 3bc25e8a54 A typo.
llvm-svn: 25307
2006-01-14 01:18:49 +00:00
Jim Laskey 2d7162aaf4 testcase for PR676: http://llvm.cs.uiuc.edu/PR676
llvm-svn: 25306
2006-01-14 00:29:48 +00:00
Chris Lattner a4de9baf40 Implement a new InvalidateStructLayoutInfo method and add some comments
llvm-svn: 25304
2006-01-14 00:07:34 +00:00
Chris Lattner 48c60c0285 Add a new InvalidateStructLayoutInfo method and some comments.
llvm-svn: 25303
2006-01-14 00:06:42 +00:00
Nate Begeman 0f223bbce2 Make the bswap documentation more to sabre's liking!
llvm-svn: 25302
2006-01-13 23:26:38 +00:00
Chris Lattner 333374713d fix some minor errors
llvm-svn: 25301
2006-01-13 23:26:01 +00:00
Nate Begeman 611ecc07b6 Add documentation for the upcoming bswap intrinsics!
llvm-svn: 25300
2006-01-13 23:02:51 +00:00
Robert Bocchino a83529678e Added instcombine support for extractelement.
llvm-svn: 25299
2006-01-13 22:48:06 +00:00
Chris Lattner 403a11ca8f testcase for PR691
llvm-svn: 25298
2006-01-13 22:05:36 +00:00
Chris Lattner db8c13acf3 new testcases for the stackrestore instcombine optimizations
llvm-svn: 25297
2006-01-13 22:01:47 +00:00
Evan Cheng 392c7d2779 Add truncstore i1 patterns.
llvm-svn: 25296
2006-01-13 21:45:19 +00:00
Chris Lattner 5fba6e6696 it is ok to dce stacksave.
llvm-svn: 25295
2006-01-13 21:31:54 +00:00
Chris Lattner 503221f5c5 Do a simple instcombine xforms to delete llvm.stackrestore cases.
llvm-svn: 25294
2006-01-13 21:28:09 +00:00
Chris Lattner 5f9c134bac Fix a bug in my last X86 checkin, pointed out by cozmic
llvm-svn: 25293
2006-01-13 20:19:44 +00:00
Chris Lattner c66b223b28 Simplify this a tiny bit by using the new IntrinsicInst functionality.
llvm-svn: 25292
2006-01-13 20:11:04 +00:00
Chris Lattner 0de6020d6a Simplify the implementations of classof using the new IntrinsicInst classof.
llvm-svn: 25291
2006-01-13 20:00:51 +00:00
Evan Cheng dba84bbc1e LHS = X86ISD::CMOVcc LHS, RHS means LHS = RHS if cc. So the operands must be
flipped around.

llvm-svn: 25290
2006-01-13 19:51:46 +00:00
Chris Lattner d5bb9df4d8 Add some functionality to the IntrinsicInst class and some comments
llvm-svn: 25289
2006-01-13 19:49:02 +00:00
Chris Lattner 45406c0c53 Permit inlining functions that contain dynamic allocations now that
InlineFunction handles this case safely.  This implements
Transforms/Inline/dynamic_alloca_test.ll.

llvm-svn: 25288
2006-01-13 19:35:43 +00:00
Chris Lattner accc5bfe92 New testcase that functions with dynamic allocas can be inlined, and are
inlined correctly.

llvm-svn: 25287
2006-01-13 19:35:05 +00:00
Chris Lattner 2be0607a8d If inlining a call to a function that contains dynamic allocas, wrap the
resultant code with llvm.stacksave/llvm.stackrestore intrinsics.

llvm-svn: 25286
2006-01-13 19:34:14 +00:00
Chris Lattner e24f79a032 Use ClonedCodeInfo to avoid another walk over the inlined code, this this
time in common C cases.

llvm-svn: 25285
2006-01-13 19:18:11 +00:00
Chris Lattner 19e6a08d78 Use the ClonedCodeInfo object to avoid scans of the inlined code when
it doesn't contain any calls.  This is a fairly common case for C++ code,
so it will probably speed up the inliner marginally in these cases.

llvm-svn: 25284
2006-01-13 19:15:15 +00:00