Rafael Espindola [Wed, 24 Nov 2010 18:51:21 +0000 (18:51 +0000)]
Fix and add tests for all cases in x86 and x86_64 where gnu as implicitly
sets the type of a symbol to STT_TLS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120100
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 24 Nov 2010 18:03:57 +0000 (18:03 +0000)]
Testcase for r120017.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120099
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 24 Nov 2010 16:32:35 +0000 (16:32 +0000)]
Updating MBlaze .mask and .frame directives to match GCC's output and fixing regression introduced in 120095 by checking MCStreamer::hasRawTextSupport.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120097
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 24 Nov 2010 15:39:32 +0000 (15:39 +0000)]
1. Fixing error where basic block labels were not being printed out when they need to be for the MBlaze backend because AsmPrinter::isBlockOnlyReachableByFallthrough does not take into account delay slots.
2. Re-adding .mask and .frame directives in printed assembly.
3. Adding .ent and .end directives in printed assembly.
4. Minor cleanups to MBlaze backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120095
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Wed, 24 Nov 2010 12:59:16 +0000 (12:59 +0000)]
Use i8 as SETCC result type for i1 in SPU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120092
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Wed, 24 Nov 2010 11:42:17 +0000 (11:42 +0000)]
Allow for 'fcmp ogt' in SPU.
Fix by Visa Putkinen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120090
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 24 Nov 2010 02:19:40 +0000 (02:19 +0000)]
If a symbol is used as tls, mark it as tls even if not declare as so. Probably
fixes PR8659.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120076
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 24 Nov 2010 01:29:45 +0000 (01:29 +0000)]
include/llvm/System/system_error.h: ECANCELED is undefined on Cygwin-1.5.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120072
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 24 Nov 2010 00:54:28 +0000 (00:54 +0000)]
Tweak ImmutableMap/ImmutableSet/ImmutableList APIs
to use lowercase letters for the start of most
method names and to replace some method names
with more descriptive names (e.g., "getLeft()"
instead of "Left()"). No real functionality
change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120070
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 24 Nov 2010 00:03:32 +0000 (00:03 +0000)]
Generalize overflowLeaf to also handle overflows in branch nodes.
This doesn't quite work yet because the calls to treeDecrement and treeIncrement
operate at the leaf level, not on pathNode(Level) as required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120068
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 22:20:27 +0000 (22:20 +0000)]
add a MemoryBuffer::getOpenFile method, which turns an open
file descriptor into a MemoryBuffer (and closes the FD).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120065
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Tue, 23 Nov 2010 21:09:11 +0000 (21:09 +0000)]
system_error: Add fixme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120059
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 20:42:39 +0000 (20:42 +0000)]
Rename SimplifyDistributed to the more meaningfull name SimplifyByFactorizing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120051
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 23 Nov 2010 20:33:57 +0000 (20:33 +0000)]
The srem -> urem transform is not safe for any divisor that's not a power of two.
E.g. -5 % 5 is 0 with srem and 1 with urem.
Also addresses Frits van Bommel's comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120049
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 20:26:33 +0000 (20:26 +0000)]
Replace calls to ConstantFoldInstruction with calls to SimplifyInstruction
in two places that are really interested in simplified instructions, not
constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120044
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 20:24:21 +0000 (20:24 +0000)]
Constant folding here is pointless, because InstructionSimplify
(which does constant folding and more) is called a few lines
later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120042
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Tue, 23 Nov 2010 19:40:36 +0000 (19:40 +0000)]
Move the ARM reloc constants to Support/ELF.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120035
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 23 Nov 2010 19:38:38 +0000 (19:38 +0000)]
Recognize sign/zero-extended constant BUILD_VECTORs for VMULL operations.
We need to check if the individual vector elements are sign/zero-extended
values. For now this only handles constants values. Radar
8687140.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120034
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 23 Nov 2010 19:38:34 +0000 (19:38 +0000)]
Fix copy-and-paste error in exception message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120033
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 23 Nov 2010 18:52:42 +0000 (18:52 +0000)]
InstCombine: Reduce "X shift (A srem B)" to "X shift (A urem B)" iff B is positive.
This allows to transform the rem in "1 << ((int)x % 8);" to an and.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120028
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 15:28:14 +0000 (15:28 +0000)]
Propagate LeftDistributes and RightDistributes into their only uses.
Stylistic improvement suggested by Frits van Bommel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120026
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 15:25:34 +0000 (15:25 +0000)]
Fix typo pointed out by Frits van Bommel and Marius Wachtler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120025
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 14:23:47 +0000 (14:23 +0000)]
Exploit distributive laws (eg: And distributes over Or, Mul over Add, etc) in a
fairly systematic way in instcombine. Some of these cases were already dealt
with, in which case I removed the existing code. The case of Add has a bunch of
funky logic which covers some of this plus a few variants (considers shifts to be
a form of multiplication), which I didn't touch. The simplification performed is:
A*B+A*C -> A*(B+C). The improvement is to do this in cases that were not already
handled [such as A*B-A*C -> A*(B-C), which was reported on the mailing list], and
also to do it more often by not checking for "only one use" if "B+C" simplifies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120024
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Tue, 23 Nov 2010 13:27:59 +0000 (13:27 +0000)]
Division by pow-of-2 is not cheap on SPU, do it with
shifts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120022
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 23 Nov 2010 11:23:24 +0000 (11:23 +0000)]
Implement the rex64 prefix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120017
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 10:50:08 +0000 (10:50 +0000)]
Expand a little on the description of what InstructionSimplify does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120016
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 23 Nov 2010 10:16:18 +0000 (10:16 +0000)]
Clarify that constant folding of instructions applies when all operands
are constant. There was in fact one exception to this (phi nodes) - so
remove that exception (InstructionSimplify handles this so there should
be no loss).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120015
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 23 Nov 2010 08:08:33 +0000 (08:08 +0000)]
Invalidate the layout on any relaxation, not just Instructions. Bug found by David Meyer.
While here, remove unused argument and rename UpdateForSlide to Invalidate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120009
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 23 Nov 2010 07:20:12 +0000 (07:20 +0000)]
Produce a relocation for pcrel absolute values. Based on a patch by David Meyer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120006
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Tue, 23 Nov 2010 06:32:37 +0000 (06:32 +0000)]
Optimize a common case in the Lengauer-Tarjan dominators algorithm. This gives a
9.7% speedup running domtree on test-suite.
Reviewed by Chris Lattner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120003
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 06:09:51 +0000 (06:09 +0000)]
Revert functionality doug added in r98575 that was never
documented and only used by some clang stuff I just removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120002
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 23 Nov 2010 05:49:35 +0000 (05:49 +0000)]
Reuse data fragments while lowering. Patch by David Meyer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119999
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhanyong Wan [Tue, 23 Nov 2010 05:03:07 +0000 (05:03 +0000)]
Fix formatting nits in the coding standards. Reviewed by clattner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119998
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 04:26:12 +0000 (04:26 +0000)]
fix this harder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119994
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 04:19:56 +0000 (04:19 +0000)]
fix a bug I introduced on the other side of the #ifdef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119993
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 04:04:25 +0000 (04:04 +0000)]
reimplement SwapByteOrder.h in terms of overloading instead of
being in terms of excessively complex template logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119992
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Tue, 23 Nov 2010 03:31:01 +0000 (03:31 +0000)]
Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119990
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 02:47:22 +0000 (02:47 +0000)]
add a 'LLVMConstIntOfArbitraryPrecision' api to the C api,
patch by Greg Pfeil!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119989
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 02:42:04 +0000 (02:42 +0000)]
duncan's spider sense was right, I completely reversed the condition
on this instcombine xform. This fixes a miscompilation of 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119988
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 23 Nov 2010 02:26:52 +0000 (02:26 +0000)]
filecheckize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119987
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Mon, 22 Nov 2010 22:05:16 +0000 (22:05 +0000)]
Fixed some style issues (no _, no spc after !)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119986
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 22 Nov 2010 21:49:05 +0000 (21:49 +0000)]
Remove duplicated constants. Thanks to Jason for noticing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119985
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 22 Nov 2010 20:31:27 +0000 (20:31 +0000)]
InstCombine: Implement X - A*-B -> X + A*B.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119984
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Mon, 22 Nov 2010 18:57:00 +0000 (18:57 +0000)]
Make the <ARCH>ELFObjectWriter statics private
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119982
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Mon, 22 Nov 2010 18:47:05 +0000 (18:47 +0000)]
Fix misplaced statics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119981
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Mon, 22 Nov 2010 18:42:07 +0000 (18:42 +0000)]
Kill trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119979
91177308-0d34-0410-b5e6-
96231b3b80d8
Jason W Kim [Mon, 22 Nov 2010 18:41:13 +0000 (18:41 +0000)]
Refactor the ELFRelocationEntry (pull up) and move the arch-specific statics to inside the class where it belongs.
Next step is to rationally break apart the RecordRelocation()
Probably the step will be to have 1 member function for ech slot of the ELFRelocationEntry()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119978
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 22 Nov 2010 18:12:04 +0000 (18:12 +0000)]
Fix epilogue codegen to avoid leaving the stack pointer in an invalid
state. Previously Thumb2 would restore sp from fp like this:
mov sp, r7
sub, sp, #4
If an interrupt is taken after the 'mov' but before the 'sub', callee-saved
registers might be clobbered by the interrupt handler. Instead, try
restoring directly from sp:
add sp, #4
Or, if necessary (with VLA, etc.) use a scratch register to compute sp and
then restore it:
sub.w r4, r7, #8
mov sp, r7
rdar://
8465407
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119977
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Mon, 22 Nov 2010 17:10:20 +0000 (17:10 +0000)]
Add a newline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119976
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Mon, 22 Nov 2010 17:10:09 +0000 (17:10 +0000)]
llvmc: Make -march/-mcpu/-mtune behaviour more consistent with gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119975
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 22 Nov 2010 16:32:50 +0000 (16:32 +0000)]
If a GEP index simply advances by multiples of a type of zero size,
then replace the index with zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119974
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Mon, 22 Nov 2010 16:28:26 +0000 (16:28 +0000)]
Fix a bug with extractelement on SPU.
In the attached testcase, the element was
never extracted (missing rotate).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119973
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 22 Nov 2010 14:27:24 +0000 (14:27 +0000)]
Add basic CFI methods to the streamer interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119972
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 22 Nov 2010 13:42:49 +0000 (13:42 +0000)]
Move the "gep undef" -> "undef" transform from instcombine to
InstructionSimplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119970
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 22 Nov 2010 11:53:17 +0000 (11:53 +0000)]
Remove some #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119967
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 22 Nov 2010 09:45:38 +0000 (09:45 +0000)]
Implement the "if (X == 6 || X == 4)" -> "if ((X|2) == 6)" optimization.
This currently only catches the most basic case, a two-case switch, but can be
extended later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119964
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 22 Nov 2010 09:41:24 +0000 (09:41 +0000)]
Don't keep track of inserted phis in PromoteMemoryToRegister: the information
is never used. Patch by Cameron Zwarich.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119963
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 22 Nov 2010 09:38:00 +0000 (09:38 +0000)]
Fix a compiler warning about Kind being used uninitialized
when assertions are disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119962
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sun, 21 Nov 2010 23:38:19 +0000 (23:38 +0000)]
Pseudos default to 4byte size, let the instruction size field notice
that branch tables are special.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119954
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Sun, 21 Nov 2010 22:06:28 +0000 (22:06 +0000)]
Implement ELF object file writing support for the MBlaze backend. Its not perfect yet, but it works for many tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119952
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Sun, 21 Nov 2010 21:53:36 +0000 (21:53 +0000)]
Implement branch analysis in the MBlaze backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119951
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Sun, 21 Nov 2010 21:39:46 +0000 (21:39 +0000)]
Make it a little bit more explicit that the MBlaze backend only supports upto
32-bit immediate values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119950
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Sun, 21 Nov 2010 21:36:12 +0000 (21:36 +0000)]
Fix an error in the MBlaze delay slot filler where instructions that already
fill a delay slot are moved to fill a different delay slot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119949
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 19:05:34 +0000 (19:05 +0000)]
fix comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119948
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 18:59:20 +0000 (18:59 +0000)]
apparently tailcalls are better on darwin/x86-64 than on linux?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119947
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 21 Nov 2010 15:21:46 +0000 (15:21 +0000)]
Initialize MemDep's TD member so buildbots don't trip over an uninitialized pointer (TD is passed to PHITransAddr).
I wonder why this didn't explode earlier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119944
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 21 Nov 2010 13:53:09 +0000 (13:53 +0000)]
Add a rather pointless InstructionSimplify transform, inspired by recent constant
folding improvements: if P points to a type of size zero, turn "gep P, N" into "P".
More generally, if a gep index type has size zero, instcombine could replace the
index with zero, but that is not done here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119942
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 21 Nov 2010 12:43:13 +0000 (12:43 +0000)]
Fix spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119941
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sun, 21 Nov 2010 11:49:36 +0000 (11:49 +0000)]
More Thumb encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119940
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sun, 21 Nov 2010 11:05:29 +0000 (11:05 +0000)]
Add encoding for ARM "trap" instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119938
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sun, 21 Nov 2010 10:56:05 +0000 (10:56 +0000)]
The "trap" instruction is one of this which doesn't have a condition code. Hack
the code to not add a "condition code" if it's trap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119937
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sun, 21 Nov 2010 10:55:23 +0000 (10:55 +0000)]
- Give "trap" the correct encoding, at least according to Darwin's assembler.
- Add comments saying where the encodings for other instructions came from.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119936
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 08:39:01 +0000 (08:39 +0000)]
apply Dan's fix for PR8268 which allows constant folding to handle indexes over
zero sized elements. This allows us to compile:
#include <string>
void foo() { std::string s; }
into an empty function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119933
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 08:30:55 +0000 (08:30 +0000)]
add some helper methods for asmprinter flags, from PR8417
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119932
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 08:18:57 +0000 (08:18 +0000)]
implement PR8524, apparently mainline gas accepts movq as an alias for movd
when transfering between i64 gprs and mmx regs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119931
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 08:06:10 +0000 (08:06 +0000)]
rework some DSE paths to use the newly-public "getPointerDependencyFrom"
method in MemDep instead of inserting an instruction, doing a query,
then removing it. Neither operation is effectively cached.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119930
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 08:05:25 +0000 (08:05 +0000)]
the getLocationForSource/Dest methods can be static.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119929
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 07:51:27 +0000 (07:51 +0000)]
add "getLocation" method to AliasAnalysis for getting the source and
destination location of a memcpy/memmove. I'm not clear about whether
TBAA works on these, so I'm leaving it out for now. Dan, please revisit
this when convenient.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119928
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 07:34:32 +0000 (07:34 +0000)]
implement PR8576, deleting dead stores with intervening may-alias stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119927
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 07:32:40 +0000 (07:32 +0000)]
file checkize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119926
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 07:05:31 +0000 (07:05 +0000)]
add some random notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119925
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sun, 21 Nov 2010 06:47:06 +0000 (06:47 +0000)]
Use by-name rather than by-order operand matching for some NEON encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119923
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 06:44:42 +0000 (06:44 +0000)]
optimize:
void a(int x) { if (((1<<x)&8)==0) b(); }
into "x != 3", which occurs over 100 times in 403.gcc but in no
other program in llvm-test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119922
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 06:10:27 +0000 (06:10 +0000)]
tail calls on x86 are implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119920
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sun, 21 Nov 2010 01:26:01 +0000 (01:26 +0000)]
BR_JTadd is ARM-only, so use the proper pseudo class to get the predicate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119918
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sun, 21 Nov 2010 00:48:25 +0000 (00:48 +0000)]
Handle PCRel relocations with absolute values. Fixes PR8656.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119917
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 Nov 2010 00:28:59 +0000 (00:28 +0000)]
Implement PR8644: forwarding a memcpy value to a byval,
allowing the memcpy to be eliminated.
Unfortunately, the requirements on byval's without explicit
alignment are really weak and impossible to predict in the
mid-level optimizer, so this doesn't kick in much with current
frontends. The fix is to change clang to set alignment on all
byval arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119916
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 20 Nov 2010 23:49:06 +0000 (23:49 +0000)]
a byval argument without an align can have an arbitrary alignment
requirement on the input pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119914
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sat, 20 Nov 2010 22:52:33 +0000 (22:52 +0000)]
A few more thumb instruction MC encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119913
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 20 Nov 2010 22:38:27 +0000 (22:38 +0000)]
Rewrite address handling to use a structure with all the possible address
mode variables. Handle frame indexes in load/store and allocas again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119912
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 20 Nov 2010 22:01:38 +0000 (22:01 +0000)]
STRH only needs the additional operand, not t2STRH. Also invert conditional
to match the one from the load emitter above.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119911
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 20 Nov 2010 18:43:35 +0000 (18:43 +0000)]
Simplify code. No change in functionality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119908
91177308-0d34-0410-b5e6-
96231b3b80d8
Frits van Bommel [Sat, 20 Nov 2010 18:37:24 +0000 (18:37 +0000)]
Test commit: Fix two -Asserts mode warnings in StringMap.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119907
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 20 Nov 2010 16:14:57 +0000 (16:14 +0000)]
Make this compile on case-sensitive file systemsw
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119905
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sat, 20 Nov 2010 15:59:32 +0000 (15:59 +0000)]
Move some more hooks to TargetFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119904
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 20 Nov 2010 15:53:24 +0000 (15:53 +0000)]
Silence Release build warnings about unused functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119903
91177308-0d34-0410-b5e6-
96231b3b80d8
Francois Pichet [Sat, 20 Nov 2010 15:39:03 +0000 (15:39 +0000)]
Disable warning C4291 on MSVC. Caused because class AttributeList provides a non implemented operator delete without a corresponding new.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119902
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sat, 20 Nov 2010 11:25:00 +0000 (11:25 +0000)]
On X86, MEMBARRIER, MFENCE, SFENCE, LFENCE are not target memory intrinsics,
so don't claim they are. They are allocated using DAG.getNode, so attempts
to access MemSDNode fields results in reading off the end of the allocated
memory. This fixes crashes with "llc -debug" due to debug code trying to
print MemSDNode fields for these barrier nodes (since the crashes are not
deterministic, use valgrind to see this). Add some nasty checking to try
to catch this kind of thing in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119901
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 20 Nov 2010 07:26:51 +0000 (07:26 +0000)]
Removing the useless test that I added recently. It was meant as an example, but not complicated enough to merit another test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119898
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 20 Nov 2010 02:57:05 +0000 (02:57 +0000)]
RABasic fix. Regalloc is responsible for updating block live ins.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119896
91177308-0d34-0410-b5e6-
96231b3b80d8