Commit Graph

79325 Commits

Author SHA1 Message Date
John McCall 1950a11939 Don't emit derived-to-base destructor aliases if we don't have a definition
for the base destructor, because aliases to declarations aren't legal.

Fixes PR 6471.

llvm-svn: 97637
2010-03-03 03:40:11 +00:00
Evan Cheng 4eab008b5a Work in progress. Finding some cse now.
llvm-svn: 97635
2010-03-03 02:48:20 +00:00
Douglas Gregor 0555f7eefa Refactor CXXRecordDecl::lookupInBases() to push the recursion down a
level. No functionality change, and it obeys access control this
time.

llvm-svn: 97634
2010-03-03 02:18:00 +00:00
Chris Lattner db42f3ef2b remove nvload and two patterns that use it which are
better done by dag combine.

llvm-svn: 97633
2010-03-03 02:14:54 +00:00
Johnny Chen f1ea86b567 Added 32-bit Thumb instructions t2NOP, t2YIELD, t2WFE, t2WFI, t2SEV, and t2DBG
for disassembly only.

llvm-svn: 97632
2010-03-03 02:09:43 +00:00
Bill Wendling c8d3add052 Use APInt instead of zext value.
llvm-svn: 97631
2010-03-03 01:58:01 +00:00
Chris Lattner 46897d35cb factor the 'in the default address space' check out to a single
'dsload' pattern.  tblgen doesn't check patterns to see if they're
textually identical.  This allows better factoring.

llvm-svn: 97630
2010-03-03 01:52:59 +00:00
Chris Lattner 3fcbbd8673 factor the 'sign extended from 8 bit' patterns better so
that they are not destination type specific.  This allows
tblgen to factor them and the type check is redundant with
what the isel does anyway.

llvm-svn: 97629
2010-03-03 01:45:01 +00:00
Evan Cheng e9c46c25a1 - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).

llvm-svn: 97628
2010-03-03 01:44:33 +00:00
Evan Cheng 68dabc7058 Add an option to enable machine cse (it's not doing anything yet.
llvm-svn: 97627
2010-03-03 01:38:35 +00:00
Evan Cheng 8f31e355ca Ordering forward declarations.
llvm-svn: 97626
2010-03-03 01:37:50 +00:00
Ted Kremenek c9ef64ff67 Use SVN_REVISION, not SVN_VERSION.
llvm-svn: 97625
2010-03-03 01:30:39 +00:00
Ted Kremenek 0f0883b918 Fix an algorithmic bug in LiveVariables pointed out by Zhongxing.
If an initializer in a DeclStmt references the declared variable, that
extends the liveness of that variable.

llvm-svn: 97624
2010-03-03 01:17:41 +00:00
Bill Wendling 8cff305dff Don't turn assertions on by default.
llvm-svn: 97623
2010-03-03 01:13:55 +00:00
Douglas Gregor 77709906a4 Revert r97618. Access control sucks
llvm-svn: 97621
2010-03-03 01:13:25 +00:00
Ted Kremenek 47307292f1 Make getClangRevision() check that SVN_VERSION is an empty string
(even if it is defined).  This fixes the issue of this function
returning '0' when SVN_VERSION is defined to be "".

Fixes: <rdar://problem/7663667>
llvm-svn: 97620
2010-03-03 01:02:48 +00:00
Zhongxing Xu 6b11b4e050 Add comments to test case.
llvm-svn: 97619
2010-03-03 01:02:48 +00:00
Douglas Gregor a62a5237fc Factor out the recursive lookup into C++ base classes into a separate,
static function. No functionality change.

llvm-svn: 97618
2010-03-03 01:02:31 +00:00
Evan Cheng d8c50c67dc Eliminate unused instruction classes.
llvm-svn: 97617
2010-03-03 00:43:15 +00:00
Bill Wendling af13d82945 This test case:
long test(long x) { return (x & 123124) | 3; }

Currently compiles to:

_test:
        orl     $3, %edi
        movq    %rdi, %rax
        andq    $123127, %rax
        ret

This is because instruction and DAG combiners canonicalize

  (or (and x, C), D) -> (and (or, D), (C | D))

However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.

llvm-svn: 97616
2010-03-03 00:35:56 +00:00
Douglas Gregor aa5087f6e5 Initialize your storage, dummy
llvm-svn: 97615
2010-03-03 00:29:43 +00:00
Johnny Chen 334af68052 Added 32-bit Thumb instructions t2DMB variants, t2DSB variants, and t2ISBsy for
disassembly only.

llvm-svn: 97614
2010-03-03 00:16:28 +00:00
Douglas Gregor a75600b7d8 Don't use echo in the Index test, which I hope will work around an intermittent Windows failure
llvm-svn: 97613
2010-03-03 00:03:22 +00:00
Erick Tryzelaar f6fcdbcf9c Use the ocaml tag 0 since we are just returning an option value.
llvm-svn: 97612
2010-03-02 23:59:08 +00:00
Erick Tryzelaar e9096c8289 Don't use an ocaml keyword in an ocamldoc comment.
llvm-svn: 97611
2010-03-02 23:59:05 +00:00
Erick Tryzelaar 94feaafe1e Expose the optimization level for the jit in ocaml.
llvm-svn: 97610
2010-03-02 23:59:03 +00:00
Erick Tryzelaar 98b05d67e9 Remove module providers from ocaml.
llvm-svn: 97609
2010-03-02 23:59:00 +00:00
Erick Tryzelaar ad0e0cb0df Add Module functions in place of module providers.
llvm-svn: 97608
2010-03-02 23:58:54 +00:00
Douglas Gregor 832940b321 Eliminate the static map of overridden C++ methods, which was going to
come back to bite us at some point. 

llvm-svn: 97607
2010-03-02 23:58:15 +00:00
Chris Lattner 8d63704021 merge two loops over all nodes in the graph into one.
llvm-svn: 97606
2010-03-02 23:12:51 +00:00
John McCall 6b21eb5c59 Suppress implicit member redeclarations arising from explicit instantiation
declarations after the member has been explicitly specialized.  We already
did this after explicit instantiation definitions;  not doing it for
declarations meant that subsequent definitions would see a previous
member declaration with specialization kind "explicit instantiation decl",
which would then happily get overridden.

Fixes PR 6458.

llvm-svn: 97605
2010-03-02 23:09:38 +00:00
Chris Lattner 1eb6eb059c eliminate PreprocessForRMW now that isel handles it.
We still preprocess calls and fp return stuff.

llvm-svn: 97598
2010-03-02 22:33:56 +00:00
Chris Lattner 71ddd8e2aa remove 300 lines of code that is now dead in the MSP430 backend
now that isel handles chains more aggressively.  This also
allows us to make isLegalToFold non-virtual.

llvm-svn: 97597
2010-03-02 22:30:08 +00:00
Chris Lattner dd030701bd Fix some issues in WalkChainUsers dealing with
CopyToReg/CopyFromReg/INLINEASM.  These are annoying because
they have the same opcode before an after isel.  Fix this by
setting their NodeID to -1 to indicate that they are selected,
just like what automatically happens when selecting things that
end up being machine nodes.

With that done, give IsLegalToFold a new flag that causes it to
ignore chains.  This lets the HandleMergeInputChains routine be
the one place that validates chains after a match is successful,
enabling the new hotness in chain processing.  This smarter
chain processing eliminates the need for "PreprocessRMW" in the
X86 and MSP430 backends and enables MSP to start matching it's
multiple mem operand instructions more aggressively.

I currently #if out the dead code in the X86 backend and MSP 
backend, I'll remove it for real in a follow-on patch.

The testcase changes are:
  test/CodeGen/X86/sse3.ll: we generate better code
  test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was 
      miscompiling this before, we now generate correct code
      Convert it to filecheck while I'm at it.
  test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
      folding to make anton happy. :)

llvm-svn: 97596
2010-03-02 22:20:06 +00:00
Johnny Chen 7041f2cef6 Added 32-bit Thumb instruction CLREX (Clear-Exclusive) for disassembly only.
llvm-svn: 97595
2010-03-02 22:11:06 +00:00
Evan Cheng b86044b7b7 Allow specialization of ScopedHashTable of non-default DenseMapInfo.
llvm-svn: 97594
2010-03-02 22:10:24 +00:00
Bill Wendling ce153affa3 Okay. One last attempt:
Place the LSDA into the TEXT section on Mach-O. This saves space.

llvm-svn: 97592
2010-03-02 21:50:35 +00:00
Ted Kremenek 5d2bb1b9b3 [CFG]
After discussion with Zhongxing, don't force the initializer of DeclStmts to be
block-level expressions.

This led to some interesting fallout:

[UninitializedValues]

Always visit the initializer of DeclStmts (do not assume they are block-level expressions).

[BasicStore]

With initializers of DeclStmts no longer block-level expressions, this causes self-referencing initializers (e.g. 'int x = x') to no longer cause the initialized variable to be live before the DeclStmt.  While this is correct, it caused BasicStore::RemoveDeadBindings() to prune off the values of these variables from the initial store (where they are set to uninitialized).  The fix is to back-port some (and only some) of the lazy-binding logic from RegionStore to
BasicStore.  Now the default values of local variables are determined lazily as opposed
to explicitly initialized.

llvm-svn: 97591
2010-03-02 21:43:54 +00:00
Ted Kremenek c3c1b10243 Don't conjure a symbol for DeclStmts when the variable is a C++ reference.
llvm-svn: 97590
2010-03-02 21:43:52 +00:00
Rafael Espindola 70e040d552 During codegen assert that any copy assignment, destructor or constructor that
we need to synthesize has been marked as used by Sema.

Change Sema to avoid these asserts.

llvm-svn: 97589
2010-03-02 21:28:26 +00:00
Chris Lattner f61e34d120 this testcase is failing because pic16 doesn't define a reg/reg
xor pattern.  I have no plans to fix this XFAIL.

llvm-svn: 97587
2010-03-02 20:48:24 +00:00
Erick Tryzelaar a48e627126 Add support for use to ocaml.
llvm-svn: 97586
2010-03-02 20:32:32 +00:00
Erick Tryzelaar 9f9857e98c Rename LLVMUseIteratorRef to LLVMUseRef since we don't refer to iterators in llvm-c.
llvm-svn: 97585
2010-03-02 20:32:28 +00:00
Chris Lattner 7ecdcadcc9 xfail this for now.
llvm-svn: 97584
2010-03-02 19:53:25 +00:00
Johnny Chen 9dc2105478 Removed the extra S from the multiclass def T2I_adde_sube_s_irs as well as from
the opc string passed in, since it's a given from the class inheritance of T2sI.
The fixed the extra 's' in adcss & sbcss when disassembly printing.

llvm-svn: 97582
2010-03-02 19:38:59 +00:00
Chris Lattner 27a184b851 run HandleMergeInputChains even if we only have one input chain.
llvm-svn: 97581
2010-03-02 19:34:59 +00:00
Dan Gohman d55f574589 When expanding an expression such as (A + B + C + D), sort the operands
by loop depth and emit loop-invariant subexpressions outside of loops.
This speeds up MultiSource/Applications/viterbi and others.

llvm-svn: 97580
2010-03-02 19:32:21 +00:00
Douglas Gregor 5f6bea713b Bump the default maximum template-instantiation depth to 500, as in
GCC. Fixes PR6301.

llvm-svn: 97579
2010-03-02 19:14:36 +00:00
Evan Cheng 62e795ab8c Swap parameters of isSafeToMove and isSafeToReMat for consistency.
llvm-svn: 97578
2010-03-02 19:03:01 +00:00
Evan Cheng 10194a425c Fix typo.
llvm-svn: 97577
2010-03-02 19:02:27 +00:00