oota-llvm.git
14 years agoMC/Mach-O: Start passing in the basic MCAsmLayout object.
Daniel Dunbar [Thu, 11 Mar 2010 05:53:33 +0000 (05:53 +0000)]
MC/Mach-O: Start passing in the basic MCAsmLayout object.
 - Also, drop the current location part of AsmLayout, I think I prefer to implement this via explicit symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98240 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo some final lowering in CodeGenPrepare of _chk calls similar to
Eric Christopher [Thu, 11 Mar 2010 02:41:03 +0000 (02:41 +0000)]
Do some final lowering in CodeGenPrepare of _chk calls similar to
that in InstCombineCalls.

More call lowering needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98228 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Sketch initial MCAsmLayout class, which encapsulates the current layout of an...
Daniel Dunbar [Thu, 11 Mar 2010 02:28:59 +0000 (02:28 +0000)]
MC: Sketch initial MCAsmLayout class, which encapsulates the current layout of an assembly file. The MCAsmLayout is also available for use by MCExpr::EvaluateAs{Absolute,Relocatable}, to allow target specific hooks and "absolutizing" of symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98227 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix (unused) RegisterAsmBackend template, clang++ isn't happy about this.
Daniel Dunbar [Thu, 11 Mar 2010 02:28:52 +0000 (02:28 +0000)]
Fix (unused) RegisterAsmBackend template, clang++ isn't happy about this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98226 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove dead include.
Daniel Dunbar [Thu, 11 Mar 2010 02:28:48 +0000 (02:28 +0000)]
Remove dead include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98225 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix debug_value handling.
Dale Johannesen [Thu, 11 Mar 2010 02:10:24 +0000 (02:10 +0000)]
Fix debug_value handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98224 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Provide MCAssembler with a TargetAsmBackend.
Daniel Dunbar [Thu, 11 Mar 2010 01:34:27 +0000 (01:34 +0000)]
MC: Provide MCAssembler with a TargetAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98222 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Sketch some TargetAsmBackend hooks we are going to need.
Daniel Dunbar [Thu, 11 Mar 2010 01:34:21 +0000 (01:34 +0000)]
MC: Sketch some TargetAsmBackend hooks we are going to need.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98221 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Provide the target triple to AsmBackend constructors.
Daniel Dunbar [Thu, 11 Mar 2010 01:34:16 +0000 (01:34 +0000)]
MC: Provide the target triple to AsmBackend constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98220 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd strncpy libcall creator. Use it when it should be used.
Eric Christopher [Thu, 11 Mar 2010 01:25:07 +0000 (01:25 +0000)]
Add strncpy libcall creator.  Use it when it should be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98219 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWhen outputing a non-lazy pointer for a stub, we may need to fill in the value
Bill Wendling [Thu, 11 Mar 2010 01:18:13 +0000 (01:18 +0000)]
When outputing a non-lazy pointer for a stub, we may need to fill in the value
for the NLP because the object it's pointing to may be internal to the file.

This seems counter-intuitive, but bear with me. When we place the LSDA into the
TEXT section, the type info pointers need to be indirect and pc-rel. We
accomplish this by using NLPs. However, sometimes the types are local to the
file. GCC gets around this by not using a NLP in this case, but a "regular"
indirection like this:

GCC_except_tbl:
  .long Lfoo-.

__ZTIA:  @ This is local
  ...

Lfoo:
  .long __ZTIA

LLVM prefers NLPs on Darwin. In fact, it's more optimal for load performance to
use them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98218 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdded Thumb2 LDRD/STRD pre/post variants for disassembly only.
Johnny Chen [Thu, 11 Mar 2010 01:13:36 +0000 (01:13 +0000)]
Added Thumb2 LDRD/STRD pre/post variants for disassembly only.
Plus fixed the encoding of t2LDRDpci such that P = 1 and W = 0 (offset mode).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98217 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake sure HasDebugValue is initialized. This should fix
Dale Johannesen [Thu, 11 Mar 2010 00:52:12 +0000 (00:52 +0000)]
Make sure HasDebugValue is initialized.  This should fix
the buildbot running valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98216 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix ARM buildbot breakage.
Bob Wilson [Thu, 11 Mar 2010 00:46:22 +0000 (00:46 +0000)]
Fix ARM buildbot breakage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98215 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd support, testcases, and dox for the new GHC calling
Chris Lattner [Thu, 11 Mar 2010 00:22:57 +0000 (00:22 +0000)]
add support, testcases, and dox for the new GHC calling
convention.  Patch by David Terei!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98212 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLower small memcpys to load/stores on Thumb2.
Bob Wilson [Thu, 11 Mar 2010 00:20:49 +0000 (00:20 +0000)]
Lower small memcpys to load/stores on Thumb2.
Radar 7686922.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98210 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoVirtRegRewriter spring cleaning. No functional change.
Jakob Stoklund Olesen [Thu, 11 Mar 2010 00:11:33 +0000 (00:11 +0000)]
VirtRegRewriter spring cleaning. No functional change.

Move methods out of line and M-x whitespace-cleanup.
Promote common method arguments to member variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98207 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoWork around a bug in the openbsd assembler on i386,
Chris Lattner [Thu, 11 Mar 2010 00:06:19 +0000 (00:06 +0000)]
Work around a bug in the openbsd assembler on i386,
which doesn't support .quad correctly because it is
"really really old".  PR6528.

Yet another reason the mc assembler should take over ;-)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98205 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix PR6533 by updating the br(xor) code to remember the case
Chris Lattner [Wed, 10 Mar 2010 23:46:44 +0000 (23:46 +0000)]
fix PR6533 by updating the br(xor) code to remember the case
when it looked past a trunc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98203 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCosmetic: lengthen names and improve comments.
Dale Johannesen [Wed, 10 Mar 2010 23:37:24 +0000 (23:37 +0000)]
Cosmetic: lengthen names and improve comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98202 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix an obvious typo in an assert.
Bob Wilson [Wed, 10 Mar 2010 22:38:45 +0000 (22:38 +0000)]
Fix an obvious typo in an assert.
Patch by Sean Callanan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98200 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a bit along with the MCSymbols stored in the MachineModuleInfo maps that
Bill Wendling [Wed, 10 Mar 2010 22:34:10 +0000 (22:34 +0000)]
Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that
indicates that an MCSymbol is external or not. (It's true if it's external.)
This will be used to specify the correct information to add to non-lazy
pointers. That will be explained further when this bit is used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProgress towards shepherding debug info through SelectionDAG.
Dale Johannesen [Wed, 10 Mar 2010 22:13:47 +0000 (22:13 +0000)]
Progress towards shepherding debug info through SelectionDAG.
No functional effect yet.  This is still evolving and should
not be viewed as final.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98195 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomove PR6576 here.
Chris Lattner [Wed, 10 Mar 2010 21:42:42 +0000 (21:42 +0000)]
move PR6576 here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98194 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd DESTDIR support for TOOLALIAS, for PR6557, patch by
Chris Lattner [Wed, 10 Mar 2010 21:27:53 +0000 (21:27 +0000)]
add DESTDIR support for TOOLALIAS, for PR6557, patch by
Matthias Klose!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98193 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix another bitwidth calculation to handle vector types; based on a
Dan Gohman [Wed, 10 Mar 2010 21:04:53 +0000 (21:04 +0000)]
Fix another bitwidth calculation to handle vector types; based on a
patch by Micah Villmow for PR6572.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98188 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Use the MCAssembler symbol map instead of reconstructing.
Daniel Dunbar [Wed, 10 Mar 2010 20:58:31 +0000 (20:58 +0000)]
MC/Mach-O: Use the MCAssembler symbol map instead of reconstructing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98187 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Move the backend section and symbol data maps to MCAssembler.
Daniel Dunbar [Wed, 10 Mar 2010 20:58:29 +0000 (20:58 +0000)]
MC: Move the backend section and symbol data maps to MCAssembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98186 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove unneeded declarations.
Daniel Dunbar [Wed, 10 Mar 2010 20:58:25 +0000 (20:58 +0000)]
Remove unneeded declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98185 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake sure the LR gets pushed in functions that use vaargs. This fixes
Jim Grosbach [Wed, 10 Mar 2010 20:01:30 +0000 (20:01 +0000)]
Make sure the LR gets pushed in functions that use vaargs. This fixes
400.perlbench for the nightly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98183 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agocomment why we use custom epilogue for t1 functions using vaargs.
Jim Grosbach [Wed, 10 Mar 2010 19:59:47 +0000 (19:59 +0000)]
comment why we use custom epilogue for t1 functions using vaargs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98182 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix another place where DEBUG_VALUE affected codegen.
Dale Johannesen [Wed, 10 Mar 2010 19:57:56 +0000 (19:57 +0000)]
Fix another place where DEBUG_VALUE affected codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98181 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a DominatorTree argument to isLCSSA so that it doesn't have to
Dan Gohman [Wed, 10 Mar 2010 19:38:49 +0000 (19:38 +0000)]
Add a DominatorTree argument to isLCSSA so that it doesn't have to
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98179 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoConstant-fold GEP-of-GEP into a single GEP.
Dan Gohman [Wed, 10 Mar 2010 19:31:51 +0000 (19:31 +0000)]
Constant-fold GEP-of-GEP into a single GEP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98178 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix whitespace.
Dan Gohman [Wed, 10 Mar 2010 19:00:54 +0000 (19:00 +0000)]
Fix whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98173 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFactored out the disassembly printing of CPS option, MSR mask, and Negative Zero
Johnny Chen [Wed, 10 Mar 2010 18:59:38 +0000 (18:59 +0000)]
Factored out the disassembly printing of CPS option, MSR mask, and Negative Zero
operands into their own PrintMethod, in order not to pollute the printOperand()
impl with disassembly only Imm modifiers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98172 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix make check with cmake/lit
Tobias Grosser [Wed, 10 Mar 2010 18:41:59 +0000 (18:41 +0000)]
Fix make check with cmake/lit

PR6540: Set the newly introduced variables ENABLE_SHARED and
SHLIBPATH_VAR in lit.site.cfg not only in the autoconf build, but also
in a cmake one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98171 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThe backend now makes a reasonable job of targeting lmul / macc
Richard Osborne [Wed, 10 Mar 2010 18:14:47 +0000 (18:14 +0000)]
The backend now makes a reasonable job of targeting lmul / macc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98169 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoHandle MVT::i64 type in DAG combine for ISD::ADD. Fold 64 bit
Richard Osborne [Wed, 10 Mar 2010 18:12:27 +0000 (18:12 +0000)]
Handle MVT::i64 type in DAG combine for ISD::ADD. Fold 64 bit
expression add(add(mul(x,y),a),b) -> lmul(x,y,a,b) if all
operands are zero extended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98168 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove unneeded includes.
Daniel Dunbar [Wed, 10 Mar 2010 17:56:05 +0000 (17:56 +0000)]
Remove unneeded includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98167 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTestcase for pr6552. I changed the code to use "ip" instead of "fp" because
Bob Wilson [Wed, 10 Mar 2010 17:54:11 +0000 (17:54 +0000)]
Testcase for pr6552.  I changed the code to use "ip" instead of "fp" because
the "fp" register name is not valid on Darwin, and the "ip" register name was
broken for all ARM targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98166 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix checking of intermediates having one use in isADDADDMUL
Richard Osborne [Wed, 10 Mar 2010 17:16:29 +0000 (17:16 +0000)]
Fix checking of intermediates having one use in isADDADDMUL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98164 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoExtract recognition of patterns such as add(add(mul(x,y),a),b)
Richard Osborne [Wed, 10 Mar 2010 17:10:35 +0000 (17:10 +0000)]
Extract recognition of patterns such as add(add(mul(x,y),a),b)
into a seperate function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98162 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix thinko.
Richard Osborne [Wed, 10 Mar 2010 16:27:11 +0000 (16:27 +0000)]
Fix thinko.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98158 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFold add(add(mul(x,y),a),b) -> lmul(x,y,a,b) if the intermediate
Richard Osborne [Wed, 10 Mar 2010 16:19:31 +0000 (16:19 +0000)]
Fold add(add(mul(x,y),a),b) -> lmul(x,y,a,b) if the intermediate
results are unused elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98157 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove duplicated code. No functionality change.
Benjamin Kramer [Wed, 10 Mar 2010 16:04:20 +0000 (16:04 +0000)]
Remove duplicated code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98156 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a bug in DEBUG_VALUE handling Devang ran into.
Dale Johannesen [Wed, 10 Mar 2010 15:06:26 +0000 (15:06 +0000)]
Fix a bug in DEBUG_VALUE handling Devang ran into.
I'll get this loop right yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98155 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrefer LMUL to MACCU as LMUL has no tied operands.
Richard Osborne [Wed, 10 Mar 2010 13:27:10 +0000 (13:27 +0000)]
Prefer LMUL to MACCU as LMUL has no tied operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98153 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCustom lower (S|U)MUL_LOHI -> MACC(S|U)
Richard Osborne [Wed, 10 Mar 2010 13:20:07 +0000 (13:20 +0000)]
Custom lower (S|U)MUL_LOHI -> MACC(S|U)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98152 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix indentation
Richard Osborne [Wed, 10 Mar 2010 11:42:05 +0000 (11:42 +0000)]
Fix indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98151 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLower add (mul a, b), c into MACCU / MACCS nodes which translate
Richard Osborne [Wed, 10 Mar 2010 11:41:08 +0000 (11:41 +0000)]
Lower add (mul a, b), c into MACCU / MACCS nodes which translate
directly to the maccu / maccs instructions. We handle this in
ExpandADDSUB since after type legalisation it is messy to
recognise these operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98150 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoConvert test to FileCheck.
Richard Osborne [Wed, 10 Mar 2010 11:24:03 +0000 (11:24 +0000)]
Convert test to FileCheck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98148 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomove three lowering hooks from MAI to TLOF and make one of them
Chris Lattner [Wed, 10 Mar 2010 07:20:42 +0000 (07:20 +0000)]
move three lowering hooks from MAI to TLOF and make one of them
semantic instead of syntactic.  This completes MCization of
darwin/x86[-64]!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98145 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix typo.
Evan Cheng [Wed, 10 Mar 2010 07:07:55 +0000 (07:07 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98142 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUnbreak test on Linux.
Evan Cheng [Wed, 10 Mar 2010 07:07:45 +0000 (07:07 +0000)]
Unbreak test on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98141 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThis survived a bootstrap, so let's try 98104 again.
Dale Johannesen [Wed, 10 Mar 2010 05:45:47 +0000 (05:45 +0000)]
This survived a bootstrap, so let's try 98104 again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98137 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEnable machine cse pass.
Evan Cheng [Wed, 10 Mar 2010 03:07:41 +0000 (03:07 +0000)]
Enable machine cse pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98132 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomcize the rest of EH emission, only one more directive missing
Chris Lattner [Wed, 10 Mar 2010 02:48:06 +0000 (02:48 +0000)]
mcize the rest of EH emission, only one more directive missing
for darwin/x86 to be completely mcized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98130 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd missing filename!
Chris Lattner [Wed, 10 Mar 2010 02:29:31 +0000 (02:29 +0000)]
add missing filename!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98125 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoset the temporary bit on MCSymbols correctly.
Chris Lattner [Wed, 10 Mar 2010 02:25:11 +0000 (02:25 +0000)]
set the temporary bit on MCSymbols correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a comment.
Dan Gohman [Wed, 10 Mar 2010 02:18:48 +0000 (02:18 +0000)]
Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98122 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a couple more heuristics to neuter machine cse some more.
Evan Cheng [Wed, 10 Mar 2010 02:12:03 +0000 (02:12 +0000)]
Add a couple more heuristics to neuter machine cse some more.

1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.

Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.

Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98121 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Resolve a FIXME; these relocation types are no longer semanticaly different.
Daniel Dunbar [Wed, 10 Mar 2010 02:10:29 +0000 (02:10 +0000)]
MC/Mach-O: Resolve a FIXME; these relocation types are no longer semanticaly different.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98120 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClarify the documentation for MachineFunctionPasses.
Dan Gohman [Wed, 10 Mar 2010 01:29:39 +0000 (01:29 +0000)]
Clarify the documentation for MachineFunctionPasses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98119 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoeliminate MCContext::CreateSymbol and CreateTemporarySymbol.
Chris Lattner [Wed, 10 Mar 2010 01:29:27 +0000 (01:29 +0000)]
eliminate MCContext::CreateSymbol and CreateTemporarySymbol.
Add a new GetOrCreateTemporarySymbol method and a version that
takes a twine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98118 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoinline away a form of IsPCRelative, eliminating the
Chris Lattner [Wed, 10 Mar 2010 01:17:49 +0000 (01:17 +0000)]
inline away a form of IsPCRelative, eliminating the
dead IsPCRel argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98117 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd some fixme's for MCizing. EH still has a few things that
Chris Lattner [Wed, 10 Mar 2010 01:04:13 +0000 (01:04 +0000)]
add some fixme's for MCizing.  EH still has a few things that
need to be MCized, but the last debug info thing are LEB and
cygwin specific (which the MC api doesn't support yet) and
one specific form of EmitReference which I'll tackle next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98116 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Use the SECTDIFF relocation type for (A - B + constant) where A is external.
Daniel Dunbar [Wed, 10 Mar 2010 00:58:25 +0000 (00:58 +0000)]
MC/Mach-O: Use the SECTDIFF relocation type for (A - B + constant) where A is external.
 - I'm not sure why, but this is what 'as' does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98115 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClear up the last (famous last words) frame index value reuse issues for Thumb1.
Jim Grosbach [Wed, 10 Mar 2010 00:13:42 +0000 (00:13 +0000)]
Clear up the last (famous last words) frame index value reuse issues for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98109 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSpeculatively revert 98104; could be what's causing crashes
Dale Johannesen [Wed, 10 Mar 2010 00:11:34 +0000 (00:11 +0000)]
Speculatively revert 98104; could be what's causing crashes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98108 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomcize uses of PrintRelDirective and eliminate it.
Chris Lattner [Wed, 10 Mar 2010 00:09:21 +0000 (00:09 +0000)]
mcize uses of PrintRelDirective and eliminate it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98107 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoinline the bool form of PrintRelDirective away, leaving just the unsigned form.
Chris Lattner [Tue, 9 Mar 2010 23:54:52 +0000 (23:54 +0000)]
inline the bool form of PrintRelDirective away, leaving just the unsigned form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98106 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoeliminate EOL, adding all comments with the OutStreamer.AddComment
Chris Lattner [Tue, 9 Mar 2010 23:52:58 +0000 (23:52 +0000)]
eliminate EOL, adding all comments with the OutStreamer.AddComment
method.  With this, comments should end up on the same lines as the .byte
directives (for example) and we now get no output with:

$ llc CodeGen/X86/2009-02-12-DebugInfoVLA.ll -o - -filetype=null -asm-verbose

woot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98105 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEver more complicated DEBUG_VALUE fixes for branch folding.
Dale Johannesen [Tue, 9 Mar 2010 23:52:37 +0000 (23:52 +0000)]
Ever more complicated DEBUG_VALUE fixes for branch folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98104 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAvoid analyzing instructions in blocks not reachable from the entry block.
Dan Gohman [Tue, 9 Mar 2010 23:46:50 +0000 (23:46 +0000)]
Avoid analyzing instructions in blocks not reachable from the entry block.
They are lots of trouble, and they don't matter. This fixes PR6559.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98103 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoeliminate a bunch of \n's that are being printed to O. Next up is to kill
Chris Lattner [Tue, 9 Mar 2010 23:38:23 +0000 (23:38 +0000)]
eliminate a bunch of \n's that are being printed to O.  Next up is to kill
off "EOL".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98102 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoconvert the non-"ispcrel" case of EmitReference to MC,
Chris Lattner [Tue, 9 Mar 2010 23:19:15 +0000 (23:19 +0000)]
convert the non-"ispcrel" case of EmitReference to MC,
significant debug info testcases are now all going through
MCStreamer, though they print a lot of extraneous newlines to "O".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98101 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomake the NullStreamer set the section on a label when emitted so that isDefined(...
Chris Lattner [Tue, 9 Mar 2010 23:12:18 +0000 (23:12 +0000)]
make the NullStreamer set the section on a label when emitted so that isDefined() works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98100 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTry to keep the cached inliner costs around for a bit longer for big functions.
Jakob Stoklund Olesen [Tue, 9 Mar 2010 23:02:17 +0000 (23:02 +0000)]
Try to keep the cached inliner costs around for a bit longer for big functions.

The Caller cost info would be reset everytime a callee was inlined. If the
caller has lots of calls and there is some mutual recursion going on, the
caller cost info could be calculated many times.

This patch reduces inliner runtime from 240s to 0.5s for a function with 20000
small function calls.

This is a more conservative version of r98089 that doesn't break the clang
test CodeGenCXX/temp-order.cpp. That test relies on rather extreme inlining
for constant folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98099 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Rename alternate spellings of ADD{8,16,32} and mark as "code gen only" so...
Daniel Dunbar [Tue, 9 Mar 2010 22:50:46 +0000 (22:50 +0000)]
MC/X86: Rename alternate spellings of ADD{8,16,32} and mark as "code gen only" so they don't get selected by the asm matcher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98098 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Rename alternate spellings of CMP{8,16,32} and mark as "code gen only" so...
Daniel Dunbar [Tue, 9 Mar 2010 22:50:40 +0000 (22:50 +0000)]
MC/X86: Rename alternate spellings of CMP{8,16,32} and mark as "code gen only" so they don't get selected by the asm matcher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98097 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoContinue propagating the GoogleTest flags until we can update our version to
Chandler Carruth [Tue, 9 Mar 2010 22:45:10 +0000 (22:45 +0000)]
Continue propagating the GoogleTest flags until we can update our version to
eliminate this problem. This will hopefully let us make progress on Linux
bootstrapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98095 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert r98089, it was breaking a clang test.
Jakob Stoklund Olesen [Tue, 9 Mar 2010 22:43:37 +0000 (22:43 +0000)]
Revert r98089, it was breaking a clang test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98094 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTry to keep the cached inliner costs around for a bit longer for big functions.
Jakob Stoklund Olesen [Tue, 9 Mar 2010 22:17:11 +0000 (22:17 +0000)]
Try to keep the cached inliner costs around for a bit longer for big functions.

The Caller cost info would be reset everytime a callee was inlined. If the
caller has lots of calls and there is some mutual recursion going on, the
caller cost info could be calculated many times.

This patch reduces inliner runtime from 240s to 0.5s for a function with 20000
small function calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98089 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPermit inlining into huge functions. This heuristic is ancient, and inlining
Jakob Stoklund Olesen [Tue, 9 Mar 2010 22:17:06 +0000 (22:17 +0000)]
Permit inlining into huge functions. This heuristic is ancient, and inlining
can sometimes help reduce function size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98088 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChange the Value argument to eliminateFrameIndex to a type-tagged value. This
Jim Grosbach [Tue, 9 Mar 2010 21:45:49 +0000 (21:45 +0000)]
Change the Value argument to eliminateFrameIndex to a type-tagged value. This
is preparatory to having PEI's scavenged frame index value reuse logic
properly distinguish types of frame values (e.g., whether the value is
stack-pointer relative or frame-pointer relative).

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMSR (Move to Special Register from ARM core register) requires a mask to specify
Johnny Chen [Tue, 9 Mar 2010 21:39:34 +0000 (21:39 +0000)]
MSR (Move to Special Register from ARM core register) requires a mask to specify
what fields of the CPSR or SPSR are affected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98085 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: For PCrel relocations, we need to compensate for the PCrel adjustment...
Daniel Dunbar [Tue, 9 Mar 2010 21:27:58 +0000 (21:27 +0000)]
MC/Mach-O: For PCrel relocations, we need to compensate for the PCrel adjustment when determining if we need a scattered relocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98082 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Also set the PCrel bit in the second half of paired relocation entries.
Daniel Dunbar [Tue, 9 Mar 2010 21:27:47 +0000 (21:27 +0000)]
MC/Mach-O: Also set the PCrel bit in the second half of paired relocation entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98081 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/Mach-O: Don't generate relocations for PCrel fixups to local labels.
Daniel Dunbar [Tue, 9 Mar 2010 21:27:30 +0000 (21:27 +0000)]
MC/Mach-O: Don't generate relocations for PCrel fixups to local labels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98080 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThe address of an indirect call must be in R12 on Darwin.
Dale Johannesen [Tue, 9 Mar 2010 20:15:42 +0000 (20:15 +0000)]
The address of an indirect call must be in R12 on Darwin.
Make it so.  (This patch is in LowerCall_Darwin, which seems
to be used by SVR4 code as well; since that doesn't belong here,
I haven't worried about this case.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98077 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoConsolidate GoogleTest make options and duplicate them to its own makefile.
Chandler Carruth [Tue, 9 Mar 2010 19:24:49 +0000 (19:24 +0000)]
Consolidate GoogleTest make options and duplicate them to its own makefile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98074 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoscavenged frame index value re-use gets confused when more than one base
Jim Grosbach [Tue, 9 Mar 2010 19:07:28 +0000 (19:07 +0000)]
scavenged frame index value re-use gets confused when more than one base
register is involved for thumb1. Work around this for the moment by only
re-using SP-relative offsets. This is temporary 'til the code can distinguish
multiple base registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98071 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThe ARM EH experiment worked!
Bill Wendling [Tue, 9 Mar 2010 18:31:07 +0000 (18:31 +0000)]
The ARM EH experiment worked!

Place the LSDA into the TEXT section for ARM platforms. This involves making the
encoding indirect, pcrel, and sdata4 instead of an absolute pointer. The
references to the type infos are then non-lazy pointers. Revision 98019 changed
the encoding of non-lazy pointers to add the symbol to the non-lazy pointer
definition if it's a local symbol (otherwise, it's external and set to '0' so
that the loader can adjust it to the real value). This paved the way for this
change to work on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98068 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoIn cases where the carry / borrow unused converted ladd / lsub
Richard Osborne [Tue, 9 Mar 2010 16:34:25 +0000 (16:34 +0000)]
In cases where the carry / borrow unused converted ladd / lsub
to an add or a sub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98059 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCanonicalize ladd constant to RHS.
Richard Osborne [Tue, 9 Mar 2010 16:13:57 +0000 (16:13 +0000)]
Canonicalize ladd constant to RHS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98058 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd DAG combine for ladd / lsub.
Richard Osborne [Tue, 9 Mar 2010 16:07:47 +0000 (16:07 +0000)]
Add DAG combine for ladd / lsub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98057 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAttempt to fix random build failures seen when doing highly
Duncan Sands [Tue, 9 Mar 2010 09:03:21 +0000 (09:03 +0000)]
Attempt to fix random build failures seen when doing highly
parallel builds: the gold plugin fails to link because the lto
library is in the middle of being written out by the linker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98054 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow more cross-rc coalescing.
Evan Cheng [Tue, 9 Mar 2010 06:38:17 +0000 (06:38 +0000)]
Allow more cross-rc coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98048 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoreapply r98035:
Chris Lattner [Tue, 9 Mar 2010 04:54:43 +0000 (04:54 +0000)]
reapply r98035:
Now that setStartLabel takes an MCSymbol, we can de-ID'ize
beginScope and RecordSourceLine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98047 91177308-0d34-0410-b5e6-96231b3b80d8