Commit Graph

41201 Commits

Author SHA1 Message Date
Ted Kremenek f699882a76 Fixed bug in CFG construction when a CompoundStmt ended with a NullStmt.
This caused the whole body to get dropped from the CFG.

llvm-svn: 47579
2008-02-26 00:22:58 +00:00
Ted Kremenek 733f810600 Added FIXME.
llvm-svn: 47578
2008-02-26 00:20:52 +00:00
Devang Patel 767338ccec Pass const vectors by reference.
llvm-svn: 47577
2008-02-26 00:12:13 +00:00
Eli Friedman ad7d8edeeb Add missing include (for ptrdiff_t).
llvm-svn: 47576
2008-02-25 23:35:32 +00:00
Dan Gohman a790af3a88 Revert the assert for MUL_LOHI with an unused high result; Chris
pointed out that this isn't correct at -O0.

llvm-svn: 47575
2008-02-25 22:43:48 +00:00
Andrew Lenharth dddb68c63a when making bytecode modules, link as library
llvm-svn: 47574
2008-02-25 22:41:55 +00:00
Dale Johannesen 65b404d61c Revise previous patch per review.
llvm-svn: 47573
2008-02-25 22:29:22 +00:00
Ted Kremenek 7845b2607a Minor bug fix in LiveVariables: don't "kill" decls referenced by a DeclStmt
that aren't VarDecls.

llvm-svn: 47572
2008-02-25 22:28:54 +00:00
Dan Gohman 8c7a9228de Factor the assert for indexed loads/stores out of LoadSDNode
and StoreSDNode into LSBaseSDNode.

llvm-svn: 47570
2008-02-25 22:16:29 +00:00
Dan Gohman 0be2f3b941 Add an assert to verify that we don't see an
{S,U}MUL_LOHI with an unused high value.

llvm-svn: 47569
2008-02-25 22:15:55 +00:00
Eli Friedman 0992b38a78 Fix a little typo... per cfe-dev, this was apparently causing test
failures on OS X in some cases.  (Thank you valgrind.)

llvm-svn: 47568
2008-02-25 22:11:40 +00:00
Dan Gohman 2ff975e749 Remove the hack that turned an {S,U}MUL_LOHI with an unused high
result into a MUL late in the X86 codegen process. ISD::MUL is
once again Legal on X86, so this is no longer needed. And, the
hack was suboptimal; see PR1874 for details.

llvm-svn: 47567
2008-02-25 21:57:04 +00:00
Dan Gohman 432e4a6742 Make some static variables const.
llvm-svn: 47566
2008-02-25 21:39:34 +00:00
Chris Lattner f5c619f98c clarify comment, this is undefined behavior in any case, even if it only
bits VC++ right now.

llvm-svn: 47565
2008-02-25 21:38:21 +00:00
Ted Kremenek 3ed28de5cc doxygenify some comments.
llvm-svn: 47564
2008-02-25 21:33:32 +00:00
Chris Lattner 0f5a7ddc39 add an assertion to catch a null PATypeHolder, patch by Erick Tryzelaar
llvm-svn: 47563
2008-02-25 21:28:46 +00:00
Ted Kremenek 3a6fd9c177 Better handling of calls to functions via function pointers.
llvm-svn: 47562
2008-02-25 21:16:03 +00:00
Dan Gohman 1f372edd97 Convert MaskedValueIsZero and all its users to use APInt. Also add
a SignBitIsZero function to simplify a common use case.

llvm-svn: 47561
2008-02-25 21:11:39 +00:00
Chris Lattner eb85ab44f2 convert tabs to spaces, patch by Mike Stump!
llvm-svn: 47560
2008-02-25 21:04:36 +00:00
Chris Lattner 451aea8e81 add LSBaseSDNode::getOffset at Dan's request.
llvm-svn: 47558
2008-02-25 19:31:21 +00:00
Evan Cheng 548677022c All remat'ed loads cannot be folded into two-address code. Not just argument loads. This change doesn't really have any impact on codegen.
llvm-svn: 47557
2008-02-25 19:24:01 +00:00
Chris Lattner 8483d43749 prune #includes, fit in 80 cols.
llvm-svn: 47556
2008-02-25 19:21:38 +00:00
Chris Lattner 149a242743 make this self contained.
llvm-svn: 47555
2008-02-25 19:20:57 +00:00
Dale Johannesen 32d84b1772 Expand removal of MMX memory copies to allow 1 level
of TokenFactor underneath chain (seems to be enough)

llvm-svn: 47554
2008-02-25 19:20:14 +00:00
Lauro Ramos Venancio 4400a85ce8 Revert an incorrect part of my previuos patch.
llvm-svn: 47553
2008-02-25 19:08:51 +00:00
Dan Gohman 6610e9ec83 Add a new method to SDNode/SDOperand named getValueSizeInBits
that combines getValueType and MVT::getSizeInBits, since this
occurrs frequently.

llvm-svn: 47552
2008-02-25 19:08:02 +00:00
Lauro Ramos Venancio 8983891531 Fix PR2086.
llvm-svn: 47551
2008-02-25 19:03:15 +00:00
Ted Kremenek eb079dc502 Fixed bug in RemoveDeadBindings when performing the mark-and-sweep over the
symbolic store: VarDecl's inserted into the sweep may not always bind to
anything; handle this special case just like bindings to uninitialized values.

llvm-svn: 47550
2008-02-25 18:56:23 +00:00
Ted Kremenek 3866746569 Expanded transfer function support for divide-by-zero checking to include
"remainder-by-zero" checking (operator '%').

llvm-svn: 47549
2008-02-25 18:42:54 +00:00
Ted Kremenek b23cc7191f Added hack to transfer function logic to handle the case where a DeclRefExpr
wrapping an EnumConstantDecl evaluates to an integer type that has a different
signedness than the APSInt stored in the EnumConstantDecl. Will file a Bugzilla
report.

llvm-svn: 47548
2008-02-25 18:34:45 +00:00
Ted Kremenek 6f92e2294a Added transfer function support for checking for divide-by-zero errors.
llvm-svn: 47547
2008-02-25 17:51:31 +00:00
Duncan Sands 896c519d19 In debug builds check that the key property holds: all
result and operand types are legal.

llvm-svn: 47546
2008-02-25 16:21:21 +00:00
Evan Cheng 589a9fb6dc Correctly determine whether a argument load can be folded into its uses.
llvm-svn: 47545
2008-02-25 08:50:41 +00:00
Owen Anderson df1d2b02f9 Fix an issue where GVN was performing the return slot optimization when it was
not safe.  This is fixed by more aggressively checking that the return slot is
not used elsewhere in the function.

llvm-svn: 47544
2008-02-25 04:08:09 +00:00
Chris Lattner cb0d62c70d enable digraphs for C94, thanks to Neil for pointing this out.
llvm-svn: 47543
2008-02-25 04:01:39 +00:00
Evan Cheng 01d6257e81 Temporarily reverting 46959.
llvm-svn: 47542
2008-02-25 03:57:32 +00:00
Owen Anderson 40dca46ddb Fix an issue where GVN would try to use an instruction before its definition when performing return slot optimization.
llvm-svn: 47541
2008-02-25 00:40:41 +00:00
Chris Lattner 5329e7e5ed Fix PR2090, a typo in digraph processing.
llvm-svn: 47540
2008-02-24 19:05:57 +00:00
Chris Lattner 89a62c8fff Update comment.
llvm-svn: 47539
2008-02-24 19:04:33 +00:00
Steve Naroff f0ed31aafe Move the initialization of SEL/objc_selector from Sema::Sema() to Sema::ActOnTranslationUnitScope() and make sure the type/struct get inserted into the translation unit scope.
Bug submitted by David Chisnall (thanks!).

llvm-svn: 47538
2008-02-24 16:25:02 +00:00
Duncan Sands ba3d7e8e7d Add support to LegalizeTypes for building legal vectors
out of illegal elements (BUILD_VECTOR).  Uses and beefs
up BUILD_PAIR, though it didn't really have to.  Like
most of LegalizeTypes, does not support soft-float.
This cures all "make check" vector building failures.

llvm-svn: 47537
2008-02-24 07:36:03 +00:00
Ted Kremenek 72be068ab3 Two more Windows-related fixes:
- More enum signeness bitfield fixes (MSVC treats enums as signed).

- Fixed in Lex/HeaderSearch.cpp an unsafe copy between two
  HeaderSearch::PerFileInfo entries in a common vector. The copy involved two
  calls to getFileInfo() within the assignment; these calls could have
  side-effects that enlarged the internal vector, and with MSVC this would
  invalidate one of the values in the assignment.
  
Patch by Argiris Kirtzidis!

llvm-svn: 47536
2008-02-24 03:55:14 +00:00
Ted Kremenek d87eef89c8 In FileManager: use full paths to unique files and directories on Windows,
since inodes are bogus abstraction on that platform.

Patch by Argiris Kirtzidis!

llvm-svn: 47535
2008-02-24 03:15:25 +00:00
Bill Wendling a7d1ed4c98 Some platforms use the same name for 32-bit and 64-bit registers (like
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.

llvm-svn: 47534
2008-02-24 00:56:13 +00:00
Evan Cheng 2f18c39720 Backing out r47521 for now. This has broken a number of tests.
llvm-svn: 47533
2008-02-23 19:32:32 +00:00
Scott Michel 7d5eaec6dd Merge current work back to tree to minimize diffs and drift. Major highlights
for CellSPU modifications:

- SPUInstrInfo.td refactoring: "multiclass" really is _your_ friend.
- Other improvements based on refactoring effort in SPUISelLowering.cpp,
  esp. in SPUISelLowering::PerformDAGCombine(), where zero amount shifts and
  rotates are now eliminiated, other scalar-to-vector-to-scalar silliness
  is also eliminated.
- 64-bit operations are being implemented, _muldi3.c gcc runtime now
  compiles and generates the right code. More work still needs to be done.

llvm-svn: 47532
2008-02-23 18:41:37 +00:00
Zhou Sheng aae582ba99 Testcase for Revision 47478.
llvm-svn: 47531
2008-02-23 10:59:51 +00:00
Eli Friedman 401675b0de Minor code cleanup.
llvm-svn: 47530
2008-02-23 07:32:49 +00:00
Evan Cheng 504c645b3e Rematerialization logic was overly conservative when it comes to loads from fixed stack slots.
llvm-svn: 47529
2008-02-23 03:38:34 +00:00
Evan Cheng 405827dc26 Update test.
llvm-svn: 47527
2008-02-23 02:57:25 +00:00