Commit Graph

47340 Commits

Author SHA1 Message Date
Dan Gohman ed627385de Make use of getUMinFromMismatchedTypes when computing backedge-taken
counts for loops with multiple exits, replacing more conservative code
which only handled constants. This is derived from a patch by
Nick Lewycky.

This also fixes llc aborts in ClamAV and others, as
getUMinFromMismatchedTypes takes care of balancing the types before
working with them.

llvm-svn: 73884
2009-06-22 15:09:28 +00:00
Dan Gohman 2bc22305d2 Add a getUMinFromMismatchedTypes helper function.
llvm-svn: 73883
2009-06-22 15:03:27 +00:00
Duncan Sands 376c6f16de Include cstdio to get EOF, needed with gcc-4.4.
llvm-svn: 73879
2009-06-22 06:59:32 +00:00
Chris Lattner 1d1fe918de process memory operands with a parenthesized expression for a displacement,
like "(4+5)(%eax)".

llvm-svn: 73878
2009-06-22 06:35:58 +00:00
Chris Lattner 7fdbce7a60 Implement full support for parsing primary expressions. We can now parse
all of health and voronoi (ignoring directives).  We only get 409 lines into
176.gcc though because we don't have binary operators yet:

Parsing 176.gcc.llc.s:409: unexpected token in operand list
	movsbl	_arityvec+1(,%edi,8), %eax
	      	         ^

llvm-svn: 73877
2009-06-22 06:32:03 +00:00
Chris Lattner a7b51ed5e6 implement parser support for '*' operands, as in "call *%eax".
llvm-svn: 73876
2009-06-22 06:02:13 +00:00
Chris Lattner 78db36271c implement memory operand parsing.
llvm-svn: 73875
2009-06-22 05:51:26 +00:00
Dale Johannesen d3f7935f50 Testcase for (llvm-gcc) 73873. Usually
std::pair<double, float*>
is 16 bytes on darwin-powerpc, but not always.
See testcase for full weirdness.

llvm-svn: 73874
2009-06-22 04:47:32 +00:00
Dan Gohman 692b46872e Factor out code for computing umin and smin for SCEV expressions into
helper functions. Based on a patch by Nick Lewycky.

llvm-svn: 73869
2009-06-22 03:18:45 +00:00
Chris Lattner e5074c46b2 start implementing some simple operand parsing.
llvm-svn: 73867
2009-06-22 01:29:09 +00:00
Dan Gohman 96212b661c Teach ScalarEvolution how to analyze loops with multiple exit
blocks, and also exit blocks with multiple conditions (combined
with (bitwise) ands and ors). It's often infeasible to compute an
exact trip count in such cases, but a useful upper bound can often
be found.

llvm-svn: 73866
2009-06-22 00:31:57 +00:00
Dan Gohman 13037149b9 Delete an unused variable.
llvm-svn: 73865
2009-06-22 00:19:17 +00:00
Dan Gohman 78ea89e161 Fix this code to correctly handle loops with multiple exits. Until
now, this hasn't mattered, because ScalarEvolution hasn't been able
to compute trip counts for loops with multiple exits. But it will
soon.

llvm-svn: 73864
2009-06-22 00:15:15 +00:00
Dan Gohman 860379bcc2 Rename a variable for consistency with the ExitBlock vs ExitingBlock
terminology that LoopInfo uses.

llvm-svn: 73863
2009-06-21 23:48:38 +00:00
Dan Gohman 0104842ee3 Fix ScalarEvolution's backedge-taken count computations to check for
overflow when computing a integer division to round up.

Thanks to Nick Lewycky for noticing this!

llvm-svn: 73862
2009-06-21 23:46:38 +00:00
Chris Lattner 2adc9e739c rename SourceMgr::PrintError to PrintMessage.
llvm-svn: 73861
2009-06-21 21:22:11 +00:00
Chris Lattner 36e0212c16 set up the top-level parsing loop.
llvm-svn: 73860
2009-06-21 20:54:55 +00:00
Chris Lattner b013345338 stub out parser for asm files. Change invariant on lexer to always
print its error message when it returns an asmtok::Error token.
Compute a proper error code for llvm-mc in 'lex' mode.  Add new
-as-lex option to enable lexing mode (vs parsing mode).

llvm-svn: 73859
2009-06-21 20:16:42 +00:00
Chris Lattner 419a97491a add string literals.
llvm-svn: 73858
2009-06-21 19:56:35 +00:00
Chris Lattner 99f0b60f45 hopefully fix the build on linux.
llvm-svn: 73857
2009-06-21 19:43:50 +00:00
Chris Lattner 7d4c0d5fb3 simplify some error recovery stuff.
llvm-svn: 73856
2009-06-21 19:22:49 +00:00
Chris Lattner d0765617d2 implement enough of a lexer to get through Olden/health/Output/health.llc.s
without errors.

llvm-svn: 73855
2009-06-21 19:21:25 +00:00
Rafael Espindola 6ead59f8ed Fix PR4185.
Handle FpSET_ST0_80 being used when ST0 is still alive.

llvm-svn: 73850
2009-06-21 12:02:51 +00:00
Chris Lattner d485848229 oh yeah, cmake needs to be told explicitly about new files :)
llvm-svn: 73849
2009-06-21 07:19:34 +00:00
Chris Lattner c8dfbcbb31 some baby steps.
llvm-svn: 73848
2009-06-21 07:19:10 +00:00
Chris Lattner 7153bd8a29 prune #include, fix warning.
llvm-svn: 73847
2009-06-21 05:33:06 +00:00
Chris Lattner d70e15b46f start wiring up support for asm parsing.
llvm-svn: 73846
2009-06-21 05:22:37 +00:00
Chris Lattner 976af622a9 move include searching logic from TGLexer to SourceMgr.
llvm-svn: 73845
2009-06-21 05:06:04 +00:00
Chris Lattner fd255754af Rename TGSourceMgr -> SourceMgr.
llvm-svn: 73844
2009-06-21 03:41:50 +00:00
Chris Lattner 526c8cb557 rename TGLoc -> SMLoc.
llvm-svn: 73843
2009-06-21 03:39:35 +00:00
Chris Lattner 1b30e1ac45 move TGSourceMgr class out of TableGen into libsupport.
llvm-svn: 73842
2009-06-21 03:36:54 +00:00
Chris Lattner 7719d0184a simplify closing paren and (rip) printing.
llvm-svn: 73841
2009-06-21 02:22:53 +00:00
Chris Lattner a3da048c82 indentation fix
llvm-svn: 73840
2009-06-21 02:22:34 +00:00
Nick Lewycky 6b8320fa5b Expand this test to handle more cases (remainder and shifts) of zero.
llvm-svn: 73839
2009-06-21 01:56:41 +00:00
Chris Lattner 98b13ac6f3 fit in 80 cols
llvm-svn: 73838
2009-06-21 01:52:00 +00:00
Chris Lattner e80442452e remove #if 0 code
llvm-svn: 73837
2009-06-21 01:48:49 +00:00
Chris Lattner cfad3f3807 cosmetic changes.
llvm-svn: 73836
2009-06-21 01:27:55 +00:00
Chris Lattner 62fdd112fc implement PR4424: 0/x is always 0 for integer division.
llvm-svn: 73835
2009-06-21 01:15:55 +00:00
Chris Lattner 7d2b049404 change TLS_ADDR lowering to lower to a real mem operand, instead of matching as
a global with that gets printed with the :mem modifier.  All operands to lea's 
should be handled with the lea32mem operand kind, and this allows the TLS stuff
to do this.  There are several better ways to do this, but I went for the minimal
change since I can't really test this (beyond make check).

This also makes the use of EBX explicit in the operand list in the 32-bit, 
instead of implicit in the instruction.

llvm-svn: 73834
2009-06-20 20:38:48 +00:00
Chris Lattner 1771a852f0 no need for unwind info
llvm-svn: 73832
2009-06-20 19:48:26 +00:00
Chris Lattner fbc9778a1b no need for unwind info here.
llvm-svn: 73831
2009-06-20 19:43:09 +00:00
Chris Lattner 40f560d433 remove dead code, the main codepath never has to deal
with MBB's.

llvm-svn: 73830
2009-06-20 19:34:47 +00:00
Chris Lattner 9c2119616f eliminate the "call" operand modifier from the asm descriptions, modeling
it as a pcrel immediate instead.  This gets pc-rel weirdness out of the
main printoperand codepath.

llvm-svn: 73829
2009-06-20 19:34:09 +00:00
Duncan Sands 2ae473f739 Clarify that if the alignment is zero then an alignment
compatible with the type will be used (at least the ABI
alignment).

llvm-svn: 73827
2009-06-20 13:26:06 +00:00
Chris Lattner b4b5c10477 fix edit-o
llvm-svn: 73824
2009-06-20 08:13:12 +00:00
Chris Lattner 9fc4db5615 some comments and cleanup
llvm-svn: 73818
2009-06-20 07:59:10 +00:00
Chris Lattner a0022a772b implement support for lowering subregs when preparing to print
LEA64_32r, eliminating a bunch of modifier logic stuff on addr modes.

Implement support for printing mbb labels as operands.

llvm-svn: 73817
2009-06-20 07:03:18 +00:00
Evan Cheng c6a8d0dbe9 Fix PR4419: handle defs of partial uses.
llvm-svn: 73816
2009-06-20 04:34:51 +00:00
Devang Patel 79ef65a271 Remove unused field.
llvm-svn: 73815
2009-06-20 01:07:54 +00:00
Devang Patel 1b61c2a1ce Initialize MMI
llvm-svn: 73813
2009-06-20 01:00:07 +00:00