Chris Lattner
4e8137d678
Rename ValueRequiresCast to ShouldOptimizeCast, to better reflect
...
what it does. Enhance it to return false to optimizing vector
sign extensions from vector comparisions, which is the idiom used
to get a splatted vector for a vector comparison.
Doing this breaks vector-casts.ll, add some compensating
transformations to handle the important case they cover without
depending on this canonicalization.
This fixes rdar://7434900 a serious pessimization of vector compares.
llvm-svn: 95855
2010-02-11 06:26:33 +00:00
Chris Lattner
c053cbbc4d
Make DSE only scan blocks that are reachable from the entry
...
block. Other blocks may have pointer cycles that will crash
basicaa and other alias analyses. In any case, there is no
point wasting cycles optimizing dead blocks. This fixes
rdar://7635088
llvm-svn: 95852
2010-02-11 05:11:54 +00:00
Chris Lattner
d924f63692
Make jump threading honor x|undef -> true and x&undef -> false,
...
instead of considering x|undef -> x, which may not be true.
llvm-svn: 95850
2010-02-11 04:40:44 +00:00
Eric Christopher
531ea566a6
Add ConstantExpr handling to Intrinsic::objectsize lowering.
...
Update testcase accordingly now that we can optimize another
section.
llvm-svn: 95846
2010-02-11 01:48:54 +00:00
Bill Wendling
7c2005aa6d
Fix to get it to compile.
...
llvm-svn: 95840
2010-02-11 01:15:27 +00:00
Bill Wendling
6034260c43
Don't print out a default newline when emitting the section offset. There are
...
almost always comments afterwards that need printing.
llvm-svn: 95839
2010-02-11 01:13:02 +00:00
Jeffrey Yasskin
e0913883b7
Make it possible to create multiple JIT instances at the same time, by removing
...
the global TheJIT and TheJITResolver variables. Lazy compilation is supported
by a global map from a stub address to the JITResolver that knows how to
compile it.
Patch by Olivier Meurant!
llvm-svn: 95837
2010-02-11 01:07:39 +00:00
Jakob Stoklund Olesen
75521cab3e
Reuse operand location when updating PHI instructions.
...
Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.
llvm-svn: 95832
2010-02-11 00:34:33 +00:00
Jakob Stoklund Olesen
896428d630
Remove duplicate successors from indirectbr instructions before building the machine CFG.
...
This makes early tail duplication run 60 times faster when compiling the Firefox
JavaScript interpreter, see PR6186.
llvm-svn: 95831
2010-02-11 00:34:18 +00:00
Devang Patel
03936a1880
Ignore dbg info intrinsics.
...
llvm-svn: 95828
2010-02-11 00:20:49 +00:00
Mon P Wang
5b77f0dac1
The previous fix of widening divides that trap was too fragile as it depends on custom
...
lowering and requires that certain types exist in ValueTypes.h. Modified widening to
check if an op can trap and if so, the widening algorithm will apply only the op on
the defined elements. It is safer to do this in widening because the optimizer can't
guarantee removing unused ops in some cases.
llvm-svn: 95823
2010-02-10 23:37:45 +00:00
Dale Johannesen
af3fe99821
Ignore debug info one more place during coalescing.
...
llvm-svn: 95819
2010-02-10 23:04:09 +00:00
Bob Wilson
0f52d0c074
Delete dead PHI machine instructions. These can be created due to type
...
legalization even when the IR-level optimizer has removed dead phis, such
as when the high half of an i64 value is unused on a 32-bit target.
I had to adjust a few test cases that had dead phis.
This is a partial fix for Radar 7627077.
llvm-svn: 95816
2010-02-10 22:58:57 +00:00
Dale Johannesen
8bba1608bd
Skip debug info in a couple of places.
...
llvm-svn: 95814
2010-02-10 21:47:48 +00:00
Bill Wendling
7742b6406b
Use an index instead of pointers into the vector. If the vector resizes, then
...
the pointer values could be invalid.
llvm-svn: 95813
2010-02-10 21:41:57 +00:00
Dale Johannesen
1ccda7b7c4
When I rewrote this loop per Chris' preference I
...
changed its behavior. Oops.
llvm-svn: 95811
2010-02-10 21:41:41 +00:00
Eli Friedman
4d4c6944e9
A few missed optimizations; the last one could have a significant impact on
...
code with lots of bitfields.
llvm-svn: 95809
2010-02-10 21:26:04 +00:00
Devang Patel
211746a69a
Strip new llvm.dbg.value intrinsic.
...
llvm-svn: 95807
2010-02-10 21:19:56 +00:00
Daniel Dunbar
3e0c9790f2
MC/X86 AsmMatcher: Fix a use after free spotted by d0k, and de-XFAIL
...
x86_32-encoding.s in on expectation of it passing.
llvm-svn: 95806
2010-02-10 21:19:28 +00:00
Dan Gohman
bd11c41b91
Minor whitespace cleanups.
...
llvm-svn: 95801
2010-02-10 20:42:57 +00:00
Dan Gohman
c42c5243a1
Use an AssemblyAnnotatorWriter to clean up IVUsers' debug output.
...
The "uses=" comments are just clutter in this context.
llvm-svn: 95799
2010-02-10 20:42:37 +00:00
Dan Gohman
e34890f921
Add a hook to AssemblyAnnotationWriter to allow custom info comments
...
to be printed, in place of the familiar "uses=" comments.
llvm-svn: 95798
2010-02-10 20:41:46 +00:00
Dan Gohman
97c5902e78
Fix several comments which had previously been "the the" where a
...
different word was intended.
llvm-svn: 95795
2010-02-10 20:04:19 +00:00
Johnny Chen
c7e14704d0
Added NOP, DBG, SVC to the instruction table for disassembly purpose.
...
llvm-svn: 95784
2010-02-10 18:02:25 +00:00
Dan Gohman
4a618827de
Fix "the the" and similar typos.
...
llvm-svn: 95781
2010-02-10 16:03:48 +00:00
Chris Lattner
de03bd0ab4
emit some simple (and probably incorrect) fixups for symbolic
...
displacement values.
llvm-svn: 95773
2010-02-10 06:52:12 +00:00
Chris Lattner
f58d0074d7
keep track of what the current byte being emitted is
...
throughout the X86 encoder.
llvm-svn: 95771
2010-02-10 06:41:02 +00:00
Chris Lattner
a725d785a9
simplify displacement handling, emit displacements by-operand
...
even for the immediate case. No functionality change.
llvm-svn: 95770
2010-02-10 06:30:00 +00:00
Dan Gohman
183a423af9
Canonicalize sizeof and alignof on pointer types to a canonical
...
pointer type.
llvm-svn: 95769
2010-02-10 06:13:07 +00:00
Daniel Dunbar
605474463f
MC: Switch MCFixup to just hold an MCExpr pointer instead of index into the
...
MCInst it came from.
llvm-svn: 95767
2010-02-10 04:47:08 +00:00
Evan Cheng
29b8f554fc
Now that ShrinkDemandedOps() is separated out from DAG combine. It sometimes leave some obvious nops which dag combine used to clean up afterwards e.g. (trunk (ext n)) -> n. Look for them and squash them.
...
llvm-svn: 95757
2010-02-10 02:17:34 +00:00
Daniel Dunbar
75c9a4eeae
llvm-mc: Remove --show-fixups and always show as part of --show-encoding.
...
Also, fix a silly memory leak.
llvm-svn: 95752
2010-02-10 01:41:14 +00:00
Dale Johannesen
f8b0e44584
Rewrite loop to suit Chris' preference.
...
llvm-svn: 95749
2010-02-10 01:31:26 +00:00
Chris Lattner
ea26fa9971
fix a layering violation: VirtRegRewriter.cpp shouldn't use AsmPrinter.h.
...
llvm-svn: 95748
2010-02-10 01:23:18 +00:00
Evan Cheng
0a75ceee38
Remove duplicated #include.
...
llvm-svn: 95747
2010-02-10 01:22:57 +00:00
Evan Cheng
3ebd551aac
Emit an error for illegal inline asm constraint (which uses illegal type) rather than asserting.
...
llvm-svn: 95746
2010-02-10 01:21:02 +00:00
Chris Lattner
c9505b68c8
fix missing #includes.
...
llvm-svn: 95745
2010-02-10 01:17:36 +00:00
Chris Lattner
69920c5c8a
daniel *really* likes fixups!
...
llvm-svn: 95742
2010-02-10 01:05:28 +00:00
Bill Wendling
a0cd0e11c9
Improve comments a even more.
...
llvm-svn: 95740
2010-02-10 00:59:47 +00:00
Dale Johannesen
f8f9f55468
Skip DBG_VALUE many places in live intervals and
...
register coalescing. This fixes many crashes and
places where debug info affects codegen (when
dbg.value is lowered to machine instructions, which
it isn't yet in TOT).
llvm-svn: 95739
2010-02-10 00:55:42 +00:00
Chris Lattner
74e6852510
Move verbose asm instruction comments to using MCStreamer.
...
The major win of this is that the code is simpler and they
print on the same line as the instruction again:
movl %eax, 96(%esp) ## 4-byte Spill
movl 96(%esp), %eax ## 4-byte Reload
cmpl 92(%esp), %eax ## 4-byte Folded Reload
jl LBB7_86
llvm-svn: 95738
2010-02-10 00:47:53 +00:00
Bill Wendling
b188e92ca9
Improve comments a bit more.
...
llvm-svn: 95737
2010-02-10 00:45:28 +00:00
Dale Johannesen
222c75bea2
more comment updates
...
llvm-svn: 95736
2010-02-10 00:44:23 +00:00
Dale Johannesen
d40d42c9e5
Add isDebug argument to ChangeToRegister; this prevents
...
the field from being used uninitialized later in some cases.
llvm-svn: 95735
2010-02-10 00:41:49 +00:00
Chris Lattner
ff68a42121
print all the newlines at the end of instructions with
...
OutStreamer.AddBlankLine instead of textually.
llvm-svn: 95734
2010-02-10 00:36:00 +00:00
Kenneth Uildriks
08f618cd03
IntegerValType holds a uint32_t, so its constructor should take a uint32_t. This allows it to be properly initialized with bit widths > 65535
...
llvm-svn: 95731
2010-02-10 00:14:03 +00:00
Dale Johannesen
3d1f1cccbb
Fix comments to reflect renaming elsewhere.
...
llvm-svn: 95730
2010-02-10 00:11:11 +00:00
Kevin Enderby
a7c1d6cfd1
Fix the encoding of the movntdqa X86 instruction. It was missing the 0x66
...
prefix which is part of the opcode encoding.
llvm-svn: 95729
2010-02-10 00:10:31 +00:00
Chris Lattner
482bf69bfe
Add ability for MCInstPrinters to add comments for instructions.
...
Enhance the x86 backend to show the hex values of immediates in
comments when they are large. For example:
movl $1072693248, 4(%esp) ## imm = 0x3FF00000
llvm-svn: 95728
2010-02-10 00:10:18 +00:00
David Greene
509be1fe5e
TableGen fragment refactoring.
...
Move some utility TableGen defs, classes, etc. into a common file so
they may be used my multiple pattern files. We will use this for
the AVX specification to help with the transition from the current
SSE specification.
llvm-svn: 95727
2010-02-09 23:52:19 +00:00
Johnny Chen
1215c774f2
Add VBIF/VBIT for disassembly only.
...
A8.6.279
llvm-svn: 95713
2010-02-09 23:05:23 +00:00
David Greene
893047d43e
Only dump output in debug mode.
...
llvm-svn: 95711
2010-02-09 23:03:05 +00:00
Daniel Dunbar
9a0a46163d
llvm-mc: Add --show-fixups option, for displaying the instruction fixup information in the asm comments.
...
llvm-svn: 95710
2010-02-09 23:00:14 +00:00
Daniel Dunbar
0e42dc0dac
MC/X86: Add a dummy implementation of MCFixup generation for hacky X86 MCCodeEmitter.
...
llvm-svn: 95709
2010-02-09 23:00:03 +00:00
Daniel Dunbar
b311a6b3ae
MC: First cut at MCFixup, for getting fixup/relocation information out of an MCCodeEmitter.
...
llvm-svn: 95708
2010-02-09 22:59:55 +00:00
Bill Wendling
bf02536262
Improve comments in the LSDA somewhat. They can be improved much more.
...
llvm-svn: 95707
2010-02-09 22:49:16 +00:00
Johnny Chen
b618f66c5f
Added VMRS/VMSR for disassembly only.
...
A8.6.335 & A8.6.336
llvm-svn: 95703
2010-02-09 22:35:38 +00:00
Chris Lattner
8aef06f8eb
port encoder enhancements over to the new encoder.
...
llvm-svn: 95699
2010-02-09 21:57:34 +00:00
Chris Lattner
0c3b66cd87
fix X86 encoder to output [disp] only addresses with no SIB byte
...
in X86-32 mode. This is still required in x86-64 mode to avoid
forming [disp+rip] encoding. Rewrite the SIB byte decision logic
to be actually understandable.
llvm-svn: 95693
2010-02-09 21:47:19 +00:00
Eric Christopher
7b7028fd24
Move Intrinsic::objectsize lowering back to InstCombineCalls and
...
enable constant 0 offset lowering.
llvm-svn: 95691
2010-02-09 21:24:27 +00:00
Chris Lattner
45d89644ae
revert r95689: getX86RegNum(BaseReg) != N86::ESP is
...
a confusing idiom to check for ESP or RSP.
llvm-svn: 95690
2010-02-09 21:21:26 +00:00
Chris Lattner
e464a4d815
simplify.
...
llvm-svn: 95689
2010-02-09 21:00:12 +00:00
Chris Lattner
b06015aa69
move target-independent opcodes out of TargetInstrInfo
...
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.
llvm-svn: 95687
2010-02-09 19:54:29 +00:00
Jim Grosbach
f7279bd10f
Radar 7417921
...
tMOVCCi pattern only valid for low registers, as the Thumb1 mov immediate to
register instruction only works with low registers. Allowing high registers
for the instruction resulted in the assembler choosing the wide (32-bit)
encoding for the mov, but LLVM though the instruction was only 16 bits wide,
so offset calculations for constant pools became incorrect, leading to
out of range constant pool entries.
llvm-svn: 95686
2010-02-09 19:51:37 +00:00
Eric Christopher
ad1aa86276
Pull these back out, they're a little too aggressive and time
...
consuming for a simple optimization.
llvm-svn: 95671
2010-02-09 17:29:18 +00:00
Johnny Chen
64e0ae8dd4
Added vcvtb/vcvtt (between half-precision and single-precision, VFP).
...
For disassembly only.
A8.6.300
llvm-svn: 95669
2010-02-09 17:21:56 +00:00
Jakob Stoklund Olesen
d19418d112
Remember to update live-in lists when coalescing physregs.
...
Patch by M Wahab!
llvm-svn: 95668
2010-02-09 17:20:11 +00:00
Chris Lattner
f5f335da37
move PR3462 to here.
...
llvm-svn: 95650
2010-02-09 05:55:14 +00:00
Chris Lattner
cf11e602a2
add a note from PR6194
...
llvm-svn: 95649
2010-02-09 05:45:29 +00:00
Dale Johannesen
c3adf44885
Skip DEBUG_VALUE in some places where it was affecting codegen.
...
llvm-svn: 95647
2010-02-09 02:01:46 +00:00
Devang Patel
ce25dd74c0
Add declaration attribute to a variable DIE, if there is a separate DIE for the definition.
...
llvm-svn: 95646
2010-02-09 01:58:33 +00:00
Chris Lattner
f4c8d3cea9
simplify this code, duh.
...
llvm-svn: 95643
2010-02-09 01:14:06 +00:00
Chris Lattner
9b6a1789e5
fix PR6193, only considering sign extensions *from i1* for this
...
xform.
llvm-svn: 95642
2010-02-09 01:12:41 +00:00
Eric Christopher
be2f0b2b7b
Add file in here too.
...
llvm-svn: 95641
2010-02-09 01:11:03 +00:00
Chris Lattner
89261502cb
make -show-inst be formatted a bit nicer. Before:
...
movl $3735928559, a ## inst: <MCInst 1273 <MCOperand Reg:0> <MCOperand Imm:1> <MCOperand Reg:0> <MCOperand Expr:(a)> <MCOperand Reg:0> <MCOperand Expr:(3735928559)>>
after:
movl $3735928559, a ## <MCInst #1273
## <MCOperand Reg:0>
## <MCOperand Imm:1>
## <MCOperand Reg:0>
## <MCOperand Expr:(a)>
## <MCOperand Reg:0>
## <MCOperand Expr:(3735928559)>>
llvm-svn: 95637
2010-02-09 00:54:51 +00:00
Lang Hames
48121948dc
Fixed a bug in the PBQP allocator's findCoalesces method.
...
Previously spill registers, whose def indexes are not defined, would sometimes be improperly marked as coalescable with conflicting registers. The new findCoalesces routine conservatively assumes that any register with at least one undefined def is not coalescable with any register it interferes with.
llvm-svn: 95636
2010-02-09 00:50:27 +00:00
Chris Lattner
d00faaa9c7
Implement x86 asm parsing support for %st and %st(4)
...
llvm-svn: 95634
2010-02-09 00:49:22 +00:00
Lang Hames
7b1e683975
Added copy sensible construction & assignment to PBQP graphs and fixed a memory access bug in the heuristic solver.
...
llvm-svn: 95633
2010-02-09 00:45:48 +00:00
Eric Christopher
9f85e7eb16
Add a new pass to do llvm.objsize lowering using SCEV.
...
Initial skeleton and SCEVUnknown lowering implemented,
the rest should come relatively quickly. Move testcase
to new directory.
Move pass to right before SimplifyLibCalls - which is
moved down a bit so we can take advantage of a few opts.
llvm-svn: 95628
2010-02-09 00:35:38 +00:00
Chris Lattner
60db0a6ba5
pass stringref by value instead of by const&
...
llvm-svn: 95627
2010-02-09 00:34:28 +00:00
Chris Lattner
187242b3ab
move PR6212 to this file.
...
llvm-svn: 95624
2010-02-09 00:11:10 +00:00
Dan Gohman
227077d1be
Implement AsmPrinter support for several more operators which have
...
direct MCExpr equivalents. Don't use MCExpr::Shr because it isn't
consistent between targets.
llvm-svn: 95620
2010-02-09 00:02:37 +00:00
Dan Gohman
9a9d9ea7bc
Document that MCExpr::Mod is actually remainder.
...
Document that MCExpr::Div, Mod, and the comparison operators are all
signed operators.
Document that the comparison operators' results are target-dependent.
Document that the behavior of shr is target-dependent.
llvm-svn: 95619
2010-02-08 23:58:47 +00:00
Chris Lattner
b22423c89a
fix some problems handling large vectors reported in PR6230
...
llvm-svn: 95616
2010-02-08 23:56:03 +00:00
Chris Lattner
08297ad15d
this is done, tested by CodeGen/ARM/iabs.ll
...
llvm-svn: 95609
2010-02-08 23:48:10 +00:00
Jim Grosbach
a570d05228
tighten up eh.setjmp sequence a bit.
...
llvm-svn: 95603
2010-02-08 23:22:00 +00:00
Chris Lattner
ebc970e4eb
now that @GOTOFF is no longer represented as a suffix on a
...
MCSymbol, we can remove the 'suffix' argument of
GetBlockAddressSymbol. Do so.
llvm-svn: 95601
2010-02-08 23:10:08 +00:00
Chris Lattner
d9d7186dc0
unify the paths for external symbols and global variables:
...
2 files changed, 48 insertions(+), 83 deletions(-)
llvm-svn: 95599
2010-02-08 23:03:41 +00:00
Chris Lattner
99777dd78f
switch the rest of the "@ concatentation" logic in the X86
...
backend to use X86MCTargetExpr, simplifying a bunch of code.
llvm-svn: 95595
2010-02-08 22:52:47 +00:00
Sean Callanan
4d16049c61
Fixed the AT&T AsmLexer to report the proper strings
...
for register tokens. Before, if it encountered
'%al,' it would report 'al,' as the token. Now it
correctly reports '%al'.
llvm-svn: 95594
2010-02-08 22:50:23 +00:00
Chris Lattner
b8479fb309
switch ELF @GOTOFF references to use X86MCTargetExpr.
...
llvm-svn: 95593
2010-02-08 22:33:55 +00:00
Dan Gohman
e51b57bee0
ConstantFoldConstantExpression can theoretically return the original
...
expression; don't go into an infinite loop if it does.
llvm-svn: 95591
2010-02-08 22:19:11 +00:00
Chris Lattner
b6b2164e28
add an x86 implementation of MCTargetExpr for
...
representing @GOT and friends. Use it for
personality references as a first use.
llvm-svn: 95588
2010-02-08 22:09:08 +00:00
Chris Lattner
54d88f1759
don't make hte dtor private or we can't construct the class.
...
llvm-svn: 95587
2010-02-08 22:07:36 +00:00
Johnny Chen
9e60686a83
Add VCVTR (between floating-point and integer, VFP) for disassembly purpose.
...
The 'R' suffix means the to-integer operations use the rounding mode specified
by the FPSCR, encoded as Inst{7} = 0.
A8.6.295
llvm-svn: 95584
2010-02-08 22:02:41 +00:00
Dan Gohman
4268d6a7c3
When CodeGen'ing unoptimized code, there may be unfolded constant expressions
...
in global initializers. Instead of aborting, attempt to fold them on the
spot. If folding succeeds, emit the folded expression instead.
This fixes PR6255.
llvm-svn: 95583
2010-02-08 22:02:38 +00:00
Dan Gohman
6f9646e1c5
Add const qualifiers.
...
llvm-svn: 95582
2010-02-08 22:00:06 +00:00
Dale Johannesen
120cfe23a7
Apply the 95471 fix to SelectionDAGBuilder as well;
...
we can get in here if FastISel gives up in a block.
(Actually the two copies of this need to be unified. Later.)
llvm-svn: 95579
2010-02-08 21:53:27 +00:00
Dan Gohman
bd374da130
In guaranteed tailcall mode, don't decline the tailcall optimization
...
for blocks ending in "unreachable".
llvm-svn: 95565
2010-02-08 20:34:14 +00:00
Dan Gohman
3464a5b609
Rename the PerformTailCallOpt variable to GuaranteedTailCallOpt to reflect
...
its current purpose.
llvm-svn: 95564
2010-02-08 20:27:50 +00:00
Johnny Chen
beb1238a85
Add VCMP (VFP floating-point compare without 'E' bit set) for disassembly purpose.
...
llvm-svn: 95560
2010-02-08 19:41:48 +00:00
Chris Lattner
38d022efe9
add scaffolding for target-specific MCExprs.
...
llvm-svn: 95559
2010-02-08 19:41:07 +00:00
Johnny Chen
c7e606f132
Added VMOVRRS/VMOVSRR to ARMInstrVFP.td for disassembly purpose.
...
A8.6.331 VMOV (between two ARM core registers and two single-precision registers)
llvm-svn: 95548
2010-02-08 17:26:09 +00:00
Torok Edwin
6e29e9d262
Fix x86 JIT stub on MSVC.
...
Thanks to Kristaps Straupe for noticing the bug.
llvm-svn: 95537
2010-02-08 08:37:27 +00:00
Nick Lewycky
b1d5ead9fb
Make the destructor for TypeMapBase protected. Spotted by Duncan Sands with
...
cppcheck!
llvm-svn: 95527
2010-02-07 21:13:46 +00:00
Duncan Sands
a1b98ab7d5
Give DwarfPrinter a protected (but not virtual) destructor. Cppcheck
...
warns about this base class not having a virtual destructor, but since
this class has no virtual methods and neither it or the types derived
from it has a destructor, a protected trivial destructor will do (and
shuts cppcheck up) the trick without the cost of introducing a vtable.
llvm-svn: 95526
2010-02-07 21:09:22 +00:00
Bruno Cardoso Lopes
d59cddc098
Add suport for VASTART on Mips.
...
llvm-svn: 95506
2010-02-06 21:00:02 +00:00
Bruno Cardoso Lopes
d6fff557db
First step towards varargs support in Mips:
...
- o32 cc must pass all arguments in A0...A3 and stack regardless
if its type (but respect the alignment).
- Store all variable arguments back to the caller stack.
llvm-svn: 95500
2010-02-06 19:20:49 +00:00
Evan Cheng
ea5c6be766
Run codegen dce pass for all targets at all optimization levels. Previously it's
...
only run for x86 with fastisel. I've found it being very effective in
eliminating some obvious dead code as result of formal parameter lowering
especially when tail call optimization eliminated the need for some of the loads
from fixed frame objects. It also shrinks a number of the tests. A couple of
tests no longer make sense and are now eliminated.
llvm-svn: 95493
2010-02-06 09:07:11 +00:00
Bob Wilson
182c53ee88
Fix an uninitialized value. Radar 7609421.
...
llvm-svn: 95488
2010-02-06 05:55:20 +00:00
Rafael Espindola
4536b9a904
Fix alignment on ppc linux. This fixes the build of crtend.o
...
llvm-svn: 95477
2010-02-06 03:32:21 +00:00
Evan Cheng
d064aefefc
Do not emit callseq instructions around sibcalls. This eliminated some unnecessary stack adjustments.
...
llvm-svn: 95475
2010-02-06 03:28:46 +00:00
Dale Johannesen
db2eb47835
After Victor's latest commits I am seeing null
...
addresses in dbg.declare; ignore this for the
moment to prevent things from breaking.
llvm-svn: 95471
2010-02-06 02:26:02 +00:00
Victor Hernandez
827de51a4a
Linker should not remap null operands of metadata
...
llvm-svn: 95468
2010-02-06 01:31:55 +00:00
Victor Hernandez
1b08138152
Function-local metadata whose operands had been optimized to no longer refer to function-local IR were not getting written by BitcodeWriter; solution is for these metadata to be enumerated just like global metadata.
...
llvm-svn: 95467
2010-02-06 01:21:09 +00:00
Jakob Stoklund Olesen
74bb06c0f0
Reintroduce the InlineHint function attribute.
...
This time it's for real! I am going to hook this up in the frontends as well.
The inliner has some experimental heuristics for dealing with the inline hint.
When given a -respect-inlinehint option, functions marked with the inline
keyword are given a threshold just above the default for -O3.
We need some experiments to determine if that is the right thing to do.
llvm-svn: 95466
2010-02-06 01:16:28 +00:00
Devang Patel
6efc8e5120
Set DW_AT_artificial only if argument is marked as artificial.
...
llvm-svn: 95461
2010-02-06 01:02:37 +00:00
Bob Wilson
5638c36efd
Handle AddrMode6 (for NEON load/stores) in Thumb2's rewriteT2FrameIndex.
...
Radar 7614112.
llvm-svn: 95456
2010-02-06 00:24:38 +00:00
Jakob Stoklund Olesen
5f9ead2714
Don't unroll loops containing function calls.
...
llvm-svn: 95454
2010-02-05 23:21:31 +00:00
Jakob Stoklund Olesen
b0b2297066
Update CodeMetrics to count 'big' function calls explicitly.
...
llvm-svn: 95453
2010-02-05 23:21:18 +00:00
Devang Patel
d4be4ced76
Do not generate specification DIE for nested functions.
...
llvm-svn: 95452
2010-02-05 23:09:20 +00:00
Chris Lattner
9d624778a3
fix incorrect encoding of SBB8mi that Kevin noticed.
...
llvm-svn: 95448
2010-02-05 22:56:11 +00:00
Chris Lattner
d91f302a05
fix a case where we'd mis-encode fisttp because of an incorrect (and
...
redundant with a correct one) pattern that was added for the disassembler.
llvm-svn: 95446
2010-02-05 22:49:06 +00:00
Chris Lattner
a60af09414
add note.
...
llvm-svn: 95445
2010-02-05 22:48:33 +00:00
Chris Lattner
175629608e
print encodings like this:
...
pslld 69, %mm3 ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0x00,0x00,0x00]
instead of like this:
pslld 69, %mm3 ## encoding: [0x0f,0xf2,0x1c,0x25,0x45,0000,0000,0000]
this only affects 0.
llvm-svn: 95441
2010-02-05 22:20:08 +00:00
Chris Lattner
58827ff98e
port X86InstrInfo::determineREX over to the new encoder.
...
llvm-svn: 95440
2010-02-05 22:10:22 +00:00
Jakob Stoklund Olesen
916f48a054
Teach SimplifyCFG about magic pointer constants.
...
Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.
Code like this:
void f(const char *x) {
if (!x)
puts("null");
else if ((uintptr_t)x == 1)
puts("one");
else if (x == (char*)2 || x == (char*)3)
puts("two");
else if ((intptr_t)x == 4)
puts("four");
else
puts(x);
}
Now becomes a switch:
define void @f(i8* %x) nounwind ssp {
entry:
%magicptr23 = ptrtoint i8* %x to i64 ; <i64> [#uses=1]
switch i64 %magicptr23, label %if.else16 [
i64 0, label %if.then
i64 1, label %if.then2
i64 2, label %if.then9
i64 3, label %if.then9
i64 4, label %if.then14
]
Note that LLVM's own DenseMap uses magic pointers.
llvm-svn: 95439
2010-02-05 22:03:18 +00:00
Chris Lattner
9c9453e582
wire up 64-bit MCCodeEmitter.
...
llvm-svn: 95438
2010-02-05 21:51:35 +00:00
Chris Lattner
86bd194234
really kill off the last MRMInitReg inst, remove logic from encoder.
...
llvm-svn: 95437
2010-02-05 21:34:18 +00:00
Chris Lattner
e96d534ce0
lower the last of the MRMInitReg instructions in MCInstLower.
...
llvm-svn: 95435
2010-02-05 21:30:49 +00:00
Chris Lattner
90916287ed
teach X86MCInstLower to lower the MOV32r0 and MOV8r0
...
pseudo instructions.
llvm-svn: 95433
2010-02-05 21:21:06 +00:00
Chris Lattner
fd7976a432
genericize helpers, use them for MOV16r0/MOV64r0
...
llvm-svn: 95432
2010-02-05 21:15:57 +00:00
Chris Lattner
340b542f8b
factor code better in X86MCInstLower::Lower, teach it to
...
lower the SETB* instructions.
llvm-svn: 95431
2010-02-05 21:13:48 +00:00
Chris Lattner
64ffd11d49
fix logical-select to invoke filecheck right, and fix hte instcombine
...
xform it is checking to actually pass. There is no need to match
m_SelectCst<0, -1> since instcombine canonicalizes that into not(sext).
Add matches for sext(not(x)) in addition to not(sext(x)).
llvm-svn: 95420
2010-02-05 19:53:02 +00:00
Chris Lattner
89f7dfff21
implement the rest of the encoding types.
...
llvm-svn: 95414
2010-02-05 19:37:31 +00:00
Chris Lattner
503243559a
move functions for decoding X86II values into the X86II namespace.
...
llvm-svn: 95410
2010-02-05 19:24:13 +00:00
Dan Gohman
4739e41ce9
Implement releaseMemory in CodeGenPrepare and free the BackEdges
...
container data. This prevents it from holding onto dangling
pointers and potentially behaving unpredictably.
llvm-svn: 95409
2010-02-05 19:24:11 +00:00
Chris Lattner
342762fdba
constant propagate a method away.
...
llvm-svn: 95408
2010-02-05 19:20:30 +00:00
Dan Gohman
8abb67df63
Use a SmallSetVector instead of a SetVector; this code showed up as a
...
malloc caller in a profile.
llvm-svn: 95407
2010-02-05 19:20:15 +00:00
Chris Lattner
b8d375fd21
change getSizeOfImm and getBaseOpcodeFor to just take
...
TSFlags directly instead of a TargetInstrDesc.
llvm-svn: 95405
2010-02-05 19:16:26 +00:00
Chris Lattner
37166eb419
add some more encodings.
...
llvm-svn: 95403
2010-02-05 19:04:37 +00:00
Eric Christopher
04371b4f12
Remove this code for now. I have a better idea and will rewrite with
...
that in mind.
llvm-svn: 95402
2010-02-05 19:04:06 +00:00
Johnny Chen
a778db9a91
VMOVRRD and VMOVDRR both have Inst{7-6} = 0b00.
...
llvm-svn: 95397
2010-02-05 18:04:58 +00:00
Jeffrey Yasskin
31faefff92
Move --march, --mcpu, and --mattr from JIT/TargetSelect.cpp to lli.cpp.
...
llc.cpp also defined these flags, meaning that when I linked all of LLVM's
libraries into a single shared library, llc crashed on startup with duplicate
flag definitions. This patch passes them through the EngineBuilder into
JIT::selectTarget().
llvm-svn: 95390
2010-02-05 16:19:36 +00:00
Daniel Dunbar
675ae27e37
MC: Change default comment column to 40 characters.
...
llvm-svn: 95378
2010-02-05 07:32:18 +00:00
Chris Lattner
df84b1aa50
implement the non-relocation forms of memory operands
...
llvm-svn: 95368
2010-02-05 06:16:07 +00:00
Evan Cheng
a366c61f77
Handle tail call with byval arguments.
...
llvm-svn: 95351
2010-02-05 02:21:12 +00:00
Chris Lattner
610c84a7c2
start adding MRMDestMem, which requires memory form mod/rm encoding
...
to start limping.
llvm-svn: 95350
2010-02-05 02:18:40 +00:00
Chris Lattner
4f627ba89f
Add a few more encodings, we can now encode all of:
...
pushl %ebp
movl %esp, %ebp
movl $42, %eax
popl %ebp
ret
llvm-svn: 95344
2010-02-05 01:53:19 +00:00
Evan Cheng
3b245876c0
When the scheduler unfold a load folding instruction it move some of the predecessors to the unfolded load. It decides what gets moved to the load by checking whether the new load is using the predecessor as an operand. The check neglects the cases whether the predecessor is a flagged scheduling unit.
...
rdar://7604000
llvm-svn: 95339
2010-02-05 01:27:11 +00:00
Bill Wendling
6510dc8dc3
An empty global constant (one of size 0) may have a section immediately
...
following it. However, the EmitGlobalConstant method wasn't emitting a body for
the constant. The assembler doesn't like that. Before, we were generating this:
.zerofill __DATA, __common, __cmd, 1, 3
This fix puts us back to that semantic.
llvm-svn: 95336
2010-02-05 00:17:02 +00:00
Bob Wilson
27dfb1e1a4
Do not reassociate expressions with i1 type. SimplifyCFG converts some
...
short-circuited conditions to AND/OR expressions, and those expressions
are often converted back to a short-circuited form in code gen. The
original source order may have been optimized to take advantage of the
expected values, and if we reassociate them, we change the order and
subvert that optimization. Radar 7497329.
llvm-svn: 95333
2010-02-04 23:32:37 +00:00
Evan Phoenix
ee9d33b4e7
Disable external stubs for X86-32 and X86-64
...
Instruction selection for X86 now can choose an instruction
sequence that will fit any address of any symbol, no matter
the pointer width. X86-64 uses a mov+call-via-reg sequence
for this.
llvm-svn: 95323
2010-02-04 19:56:59 +00:00
Evan Cheng
0a4fa4ca93
Fix typo Duncan noticed.
...
llvm-svn: 95322
2010-02-04 19:07:06 +00:00
Jakob Stoklund Olesen
113fb54bcb
Increase inliner thresholds by 25.
...
This makes the inliner about as agressive as it was before my changes to the
inliner cost calculations. These levels give the same performance and slightly
smaller code than before.
llvm-svn: 95320
2010-02-04 18:48:20 +00:00
Jakob Stoklund Olesen
c7c89b8325
Fix small bug in handling instructions with more than one implicitly defined operand.
...
ProcessImplicitDefs would only mark one operand per instruction with <undef>.
This fixed PR6086.
llvm-svn: 95319
2010-02-04 18:46:28 +00:00
Chris Lattner
fb5670fc16
move the PR6214 microoptzn to this file.
...
llvm-svn: 95299
2010-02-04 07:32:01 +00:00
Evan Cheng
aeba2250a5
Re-enable x86 tail call optimization.
...
llvm-svn: 95295
2010-02-04 06:47:24 +00:00
Eric Christopher
107a1fbf61
Temporarily revert this since it appears to have caused a build
...
failure.
llvm-svn: 95294
2010-02-04 06:41:27 +00:00
Chris Lattner
8228b11abc
add support for the sparcv9-*-* target triple to turn on
...
64-bit sparc codegen. Patch by Nathan Keynes!
llvm-svn: 95293
2010-02-04 06:34:01 +00:00
Chris Lattner
21fb024cc0
From PR6228:
...
"Attached patch removes the extra NUL bytes from the output and changes
test/Archive/MacOSX.toc from a binary to a text file (removes
svn:mime-type=application/octet-stream and adds svn:eol-style=native). I can't
figure out how to get SVN to include the new contents of the file in the patch
so I'm attaching it separately."
Patch by James Abbatiello!
llvm-svn: 95292
2010-02-04 06:19:43 +00:00
Eric Christopher
42fa84a880
Rework constant expr and array handling for objectsize instcombining.
...
Fix bugs where we would compute out of bounds as in bounds, and where
we couldn't know that the linker could override the size of an array.
Add a few new testcases, change existing testcase to use a private
global array instead of extern.
llvm-svn: 95283
2010-02-04 02:55:34 +00:00
Evan Cheng
01676f9ff4
It's too risky to eliminate sext / zext of call results for tail call optimization even if the caller / callee attributes completely match. The callee may have been bitcast'ed (or otherwise lied about what it's doing).
...
llvm-svn: 95282
2010-02-04 02:45:02 +00:00
Dan Gohman
9946b5109c
Change the argument to getIntegerSCEV to be an int64_t, rather
...
than int. This will make it more convenient for LSR, which does
a lot of things with int64_t offsets.
llvm-svn: 95281
2010-02-04 02:43:51 +00:00
Evan Cheng
9976832a05
Indirect tail call has to go through a call preserved register since it's after callee register pops. X86 isel lowering is using EAX / R11 and it was somehow adding that to function live out. That prevented the real function return register from being added to the function live out list and bad things happen.
...
This fixes 483.xalancbmk (with tail call opt).
llvm-svn: 95280
2010-02-04 02:40:39 +00:00
Dan Gohman
77fe07a93a
Use a tab instead of space after .type, for consistency.
...
llvm-svn: 95272
2010-02-04 01:42:13 +00:00
Dale Johannesen
c337d6538a
Rewrite FP constant handling in DEBUG_VALUE yet
...
again, so it more or less handles long double.
Restore \n removed in latest MC frenzy.
llvm-svn: 95271
2010-02-04 01:33:43 +00:00
Victor Hernandez
d44ee35f30
Fix (and test) function-local metadata that occurs before the instruction that it refers to; fix is to not enumerate operands of function-local metadata until after all instructions have been enumerated
...
llvm-svn: 95269
2010-02-04 01:13:08 +00:00
Eric Christopher
f12e18db21
If we're dealing with a zero-length array, don't lower to any
...
particular size, we just don't know what the length is yet.
llvm-svn: 95266
2010-02-03 23:56:07 +00:00
Chris Lattner
223084d3ac
enhance new encoder to support prefixes + RawFrm
...
instructions with no operands. It can now handle
define void @test2() nounwind { ret void }
llvm-svn: 95261
2010-02-03 21:57:59 +00:00
Chris Lattner
6794f9b9f6
set up some infrastructure, some minor cleanups.
...
llvm-svn: 95260
2010-02-03 21:43:43 +00:00
Evan Cheng
f4139067ee
Speculatively disable x86 automatic tail call optimization while we track down a self-hosting issue.
...
llvm-svn: 95259
2010-02-03 21:40:40 +00:00
Chris Lattner
f914be06d2
stub out a new X86 encoder, which can be tried with
...
-enable-new-x86-encoder until its stable.
llvm-svn: 95256
2010-02-03 21:24:49 +00:00
Chris Lattner
2f750f3b5a
rename createX86MCCodeEmitter to more accurately reflect what it creates.
...
llvm-svn: 95254
2010-02-03 21:14:33 +00:00
Kevin Enderby
00f1e6c030
Added support for X86 instruction prefixes so llvm-mc can assemble them. The
...
Lock prefix, Repeat string operation prefixes and the Segment override prefixes.
Also added versions of the move string and store string instructions without the
repeat prefixes to X86InstrInfo.td. And finally marked the rep versions of
move/store string records in X86InstrInfo.td as isCodeGenOnly = 1 so tblgen is
happy building the disassembler files.
llvm-svn: 95252
2010-02-03 21:04:42 +00:00
Devang Patel
d231689adb
Emit appropriate expression to find virtual base offset.
...
llvm-svn: 95242
2010-02-03 20:08:48 +00:00
Devang Patel
999b499024
Provide interface to identifiy artificial methods.
...
llvm-svn: 95240
2010-02-03 19:57:19 +00:00
Jeffrey Yasskin
099552a0ca
r94686 changed all ModuleProvider parameters to Modules, which made the
...
1-argument ExecutionEngine::create(Module*) ambiguous with the signature that
used to be ExecutionEngine::create(ModuleProvider*, defaulted_params). Fixed
by removing the 1-argument create(). Fixes PR6221.
llvm-svn: 95236
2010-02-03 19:18:04 +00:00
Daniel Dunbar
e3ee332fe0
llvm-mc: Add --show-inst option, for showing the MCInst inline with the assembly
...
output.
llvm-svn: 95227
2010-02-03 18:18:30 +00:00
Bob Wilson
04365c5f72
Adjust the heuristics used to decide when SROA is likely to be profitable.
...
The SRThreshold value makes perfect sense for checking if an entire aggregate
should be promoted to a scalar integer, but it is not so good for splitting
an aggregate into its separate elements. A struct may contain a large embedded
array along with some scalar fields that would benefit from being split apart
by SROA. Even if the total aggregate size is large, it may still be good to
perform SROA. Thus, the most important piece of this patch is simply moving
the aggregate size comparison vs. SRThreshold so that it guards only the
aggregate promotion.
We have also been checking the number of elements to decide if an aggregate
should be split up. The limit of "SRThreshold/4" seemed rather arbitrary,
and I don't think it's very useful to derive this limit from SRThreshold
anyway. I've collected some data showing that the current default limit of
32 (since SRThreshold defaults to 128) is a reasonable cutoff for struct
types. One thing suggested by the data is that distinguishing between structs
and arrays might be useful. There are (obviously) a lot more large arrays
than large structs (as measured by the number of elements and not the total
size -- a large array inside a struct still counts as a single element given
the way we do SROA right now). Out of 8377 arrays where we successfully
performed SROA while compiling a large set of benchmarks, only 16 of them had
more than 8 elements. And, for those 16 arrays, it's not at all clear that
SROA was actually beneficial. So, to offset the compile time cost of
investigating more large structs for SROA, the patch lowers the limit on array
elements to 8.
This fixes Apple Radar 7563690.
llvm-svn: 95224
2010-02-03 17:23:56 +00:00
Chris Lattner
3bcbdb8a28
reapply r95206, this time actually delete the code I'm replacing in the third stub case.
...
llvm-svn: 95209
2010-02-03 06:42:38 +00:00
Chris Lattner
37fad99a05
revert r95206, it is apparently causing bootstrap failure on i386-darwin9
...
llvm-svn: 95208
2010-02-03 06:41:18 +00:00
Chris Lattner
44f7325de5
print instruction encodings with the existing comment facilities,
...
so that llvm-mc -show-encoding prints like this:
hlt ## encoding: [0xf4]
instead of like this:
hlt
# encoding: [0xf4]
llvm-svn: 95207
2010-02-03 06:28:13 +00:00
Chris Lattner
3eef965b06
make the x86 backend emit darwin stubs through mcstreamer
...
instead of textually.
llvm-svn: 95206
2010-02-03 06:21:16 +00:00
Chris Lattner
082f484074
make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
...
of const ones. non-const ones aren't very useful, because you can't
even, say, emit them.
llvm-svn: 95205
2010-02-03 06:18:30 +00:00
Chris Lattner
edcf065a29
change addPassesToEmitFile to return true on failure instead of its input,
...
add -filetype=null for performance testing and remove -filetype=dynlib,
which isn't planned to be implemented.
llvm-svn: 95202
2010-02-03 05:55:08 +00:00
Evan Cheng
27a41d5473
Revert 94937 and move the noreturn check to codegen.
...
llvm-svn: 95198
2010-02-03 03:55:59 +00:00
John McCall
df951bddb8
Make APInt::countLeadingZerosSlowCase() treat the contents of padding bits
...
as undefined. Fixes an assertion in APFloat::toString noticed by Dale.
llvm-svn: 95196
2010-02-03 03:42:44 +00:00
Evan Cheng
40905b4302
Allow all types of callee's to be tail called. But avoid automatic tailcall if the callee is a result of bitcast to avoid losing necessary zext / sext etc.
...
llvm-svn: 95195
2010-02-03 03:28:02 +00:00
Chris Lattner
0b78cc2af5
don't emit \n's at the start of X86AsmPrinter::runOnMachineFunction,
...
.o files don't like that.
llvm-svn: 95187
2010-02-03 01:49:49 +00:00
Chris Lattner
f1866ab682
privatize a bunch of methods and move \n printing into them.
...
llvm-svn: 95186
2010-02-03 01:46:05 +00:00
Chris Lattner
aaa1db66a1
rename printMachineInstruction -> EmitInstruction
...
llvm-svn: 95184
2010-02-03 01:41:03 +00:00
Dale Johannesen
a466692552
Reapply 95050 with a tweak to check the register class.
...
llvm-svn: 95183
2010-02-03 01:40:33 +00:00
Chris Lattner
6f1f865fba
print instructions through the mcstreamer.
...
llvm-svn: 95181
2010-02-03 01:16:28 +00:00
Chris Lattner
402a111318
emit instructions through the streamer.
...
llvm-svn: 95180
2010-02-03 01:15:03 +00:00
Chris Lattner
183ef68ef7
Finally eliminate printMCInst and send instructions through
...
the streamer. Demo:
$ cat t.ll
define i32 @test() nounwind {
ret i32 42
}
$ llc t.ll -o -
...
_test:
movl $42, %eax
ret
$ llc t.ll -o t.o -filetype=obj
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_test:
00000000 movl $0x0000002a,%eax
00000005 ret
llvm-svn: 95179
2010-02-03 01:13:25 +00:00
Chris Lattner
996ec840d0
rejigger the world so that EmitInstruction prints the \n at
...
the end of the instruction instead of expecting the caller to
do it. This currently causes the asm-verbose instruction
comments to be on the next line.
llvm-svn: 95178
2010-02-03 01:09:55 +00:00
Chris Lattner
41ad1905c9
sink handling of target-independent machine instrs (other
...
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.
llvm-svn: 95177
2010-02-03 01:00:52 +00:00
Dale Johannesen
55e768c99a
Print FPImm a less kludgy way; APFloat.toString seems
...
to have some problems anyway.
llvm-svn: 95171
2010-02-03 00:36:40 +00:00
Bob Wilson
76e8c59509
Fix some comment typos.
...
llvm-svn: 95170
2010-02-03 00:33:21 +00:00
Chris Lattner
249453fff0
pass an instprinter into the AsmPrinter if it is available.
...
llvm-svn: 95168
2010-02-03 00:29:55 +00:00
Chris Lattner
d111bd518d
make any use of the "O" stream in asmprinter print to
...
stderr if in filetype=obj mode. This is a hack, and will
live until dwarf emission and other random stuff that is
not yet going through MCStreamer is upgraded. It only
impacts filetype=obj mode.
llvm-svn: 95166
2010-02-03 00:22:02 +00:00
Eric Christopher
d86233c118
Recommit this, looks like it wasn't the cause.
...
llvm-svn: 95165
2010-02-03 00:21:58 +00:00
Evan Cheng
5f238a9650
ByVal frame object size should be that of the byval argument, not the size of the type which is just a pointer. This is not known to break stuff but is wrong nevertheless.
...
llvm-svn: 95163
2010-02-02 23:58:13 +00:00
Chris Lattner
8856a67e41
Hook up -filetype=obj through the MachO streamer. Here's a demo:
...
$ cat t.ll
@g = global i32 42
$ llc t.ll -o t.o -filetype=obj
$ nm t.o
00000000 D _g
There is still a ton of work left. Instructions are not being encoded
yet apparently.
llvm-svn: 95162
2010-02-02 23:57:42 +00:00
Jim Grosbach
d0a2f52f8f
As of r79039, we still try to eliminate the frame pointer on leaf functions,
...
even when -disable-fp-elim is specified.
llvm-svn: 95161
2010-02-02 23:56:14 +00:00
Evan Cheng
6f36a083ef
Revert 95130.
...
llvm-svn: 95160
2010-02-02 23:55:14 +00:00
Dale Johannesen
b3cfc2b77c
Accept floating point immediates in DEBUG_VALUE.
...
llvm-svn: 95159
2010-02-02 23:54:23 +00:00
Daniel Dunbar
bdbffbedf0
AsmParser/X86: Add temporary hack to allow parsing "sal". Eventually we need
...
some mechanism for specifying alternative syntaxes, but I'm not sure what form
that should take yet.
llvm-svn: 95158
2010-02-02 23:46:47 +00:00
Chris Lattner
c49f8c7456
use OwningPtr and factor code better.
...
llvm-svn: 95156
2010-02-02 23:45:17 +00:00
Chris Lattner
b0d44c3807
refactor code so that LLVMTargetMachine creates the asmstreamer and
...
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.
llvm-svn: 95155
2010-02-02 23:37:42 +00:00
Eric Christopher
e67d01a9a8
Hopefully temporarily revert this.
...
llvm-svn: 95154
2010-02-02 23:01:31 +00:00
Chris Lattner
530c72a65d
simplify getVerboseAsm
...
llvm-svn: 95153
2010-02-02 22:58:13 +00:00
Chris Lattner
32445d300f
move handling of asm-verbose out of AsmPrinter.cpp into LLVMTargetMachine.cpp with the rest of the command line options.
...
llvm-svn: 95152
2010-02-02 22:54:51 +00:00
Chris Lattner
f8928453bc
remove dead #include, stupid symlinks.
...
llvm-svn: 95150
2010-02-02 22:37:42 +00:00
Chris Lattner
919b97436e
Remove a bunch of stuff around the edges of the ELF writer.
...
Now the only use of the ELF writer is the JIT, which won't be
easy to fix in the short term. :( :(
llvm-svn: 95148
2010-02-02 22:31:11 +00:00
Eric Christopher
f9553572b7
Reformat my last patch slightly.
...
llvm-svn: 95147
2010-02-02 22:29:26 +00:00
Chris Lattner
f46359642f
tidy some targets.
...
llvm-svn: 95146
2010-02-02 22:13:21 +00:00
Eric Christopher
4264e7e46f
Re-add strcmp and known size object size checking optimization.
...
Passed bootstrap and nightly test run here.
llvm-svn: 95145
2010-02-02 22:10:43 +00:00
Chris Lattner
6a6137832d
remove dead code.
...
llvm-svn: 95144
2010-02-02 22:03:00 +00:00
Chris Lattner
308acc4ab0
detemplatize the ppc code emitter.
...
llvm-svn: 95142
2010-02-02 21:55:58 +00:00
Chris Lattner
a3fa43932d
remove dead code.
...
llvm-svn: 95141
2010-02-02 21:52:03 +00:00
Chris Lattner
e8565d8eaf
add a definition for ID.
...
llvm-svn: 95140
2010-02-02 21:49:29 +00:00
Chris Lattner
8d806876c0
detemplatize ARM code emitter.
...
llvm-svn: 95138
2010-02-02 21:48:51 +00:00
Daniel Dunbar
3184f22447
MCAsmParser/X86: Represent absolute memory operands as CodeGen does, with scale
...
== 1.
llvm-svn: 95137
2010-02-02 21:44:16 +00:00
Daniel Dunbar
d28d6db735
MCCodeEmitter/X86: Handle tied registers better when converting MCInst ->
...
MCMachineInstr. This also fixes handling of tied registers for MRMSrcMem
instructions.
llvm-svn: 95136
2010-02-02 21:44:10 +00:00
Daniel Dunbar
255a8c8b13
MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.
...
llvm-svn: 95135
2010-02-02 21:44:01 +00:00
Chris Lattner
c83cfb9dfa
remove dead code.
...
llvm-svn: 95134
2010-02-02 21:38:59 +00:00
Chris Lattner
4578098b97
detemplatize alpha code emission, it is now JIT specific.
...
llvm-svn: 95133
2010-02-02 21:35:47 +00:00
Chris Lattner
0cd6c2a047
eliminate all the dead addSimpleCodeEmitter implementations.
...
eliminate random "code emitter" stuff in Alpha, except for
the JIT path. Next up, remove the template cruft.
llvm-svn: 95131
2010-02-02 21:31:47 +00:00
Evan Cheng
c1b0116ff1
Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.
...
llvm-svn: 95130
2010-02-02 21:29:10 +00:00
Chris Lattner
f0cb12acf2
eliminate FileModel::Model, just use CodeGenFileType. The client
...
of the code generator shouldn't care what object format a target
uses.
llvm-svn: 95124
2010-02-02 21:06:45 +00:00
Chris Lattner
29e0702dc8
remove the remnants of TargetMachOWriterInfo.
...
llvm-svn: 95114
2010-02-02 19:41:23 +00:00
Chris Lattner
809ae81ff9
Add a new top-level MachO.h file for manifest constants, fixing
...
a layering violation from MC -> Target.
llvm-svn: 95113
2010-02-02 19:38:14 +00:00
Johnny Chen
8487d65ea2
Added t2BFI (Bitfield Insert) entry for disassembler, with blank pattern field.
...
llvm-svn: 95112
2010-02-02 19:31:58 +00:00
Chris Lattner
d1e821f7eb
remove PPCMachOWriterInfo.
...
llvm-svn: 95111
2010-02-02 19:23:55 +00:00
Chris Lattner
03dc0f7077
eliminate all forms of addPassesToEmitMachineCode except
...
the one used by the JIT. Remove all forms of
addPassesToEmitFileFinish except the one used by the static
code generator. Inline the remaining version of
addPassesToEmitFileFinish into its only caller.
llvm-svn: 95109
2010-02-02 19:14:27 +00:00
Dale Johannesen
da431c76fb
Test revert 95050; there's a good chance it's causing
...
buildbot failure.
llvm-svn: 95103
2010-02-02 18:52:56 +00:00
Chris Lattner
2fdf5b535e
Inline addAssemblyEmitter into its one real caller and delete
...
the -print-emitted-asm option. The JIT shouldn't have to pull
in the asmprinter.
llvm-svn: 95100
2010-02-02 18:44:12 +00:00
Duncan Sands
fa5f5965de
Adding missing methods for creating Add, Mul, Neg and Sub with NUW.
...
llvm-svn: 95086
2010-02-02 12:53:04 +00:00
Devang Patel
057c642486
Apparently gdb is not amused by empty lines in pubtypes section.
...
llvm-svn: 95064
2010-02-02 03:47:27 +00:00
Devang Patel
6d404adc1b
NULL terminate name in pubtypes sections.
...
llvm-svn: 95062
2010-02-02 03:37:03 +00:00
Chris Lattner
8e2c471614
don't turn (A & (C0?-1:0)) | (B & ~(C0?-1:0)) -> C0 ? A : B
...
for vectors. Codegen is generating awful code or segfaulting
in various cases (e.g. PR6204).
llvm-svn: 95058
2010-02-02 02:43:51 +00:00
Chris Lattner
302240d73e
fix a crash in loop unswitch on a loop invariant vector condition.
...
llvm-svn: 95055
2010-02-02 02:26:54 +00:00
Evan Cheng
55afd2564c
Perform sibcall in some cases when arguments are passes memory. Look for cases
...
where callee's arguments are already in the caller's own caller's stack and
they line up perfectly. e.g.
extern int foo(int a, int b, int c);
int bar(int a, int b, int c) {
return foo(a, b, c);
}
llvm-svn: 95053
2010-02-02 02:22:50 +00:00
Dale Johannesen
c84816a62e
Make local RA smarter about reusing input register of a copy
...
as output. Needed for (functional) correctness in inline asm,
and should be generally beneficial. 7361612.
llvm-svn: 95050
2010-02-02 02:08:02 +00:00
Dan Gohman
949458d014
LangRef.html says that inttoptr and ptrtoint always use zero-extension
...
when the cast is extending.
llvm-svn: 95046
2010-02-02 01:44:02 +00:00
Dan Gohman
f644af8bbe
Factor out alignof expression folding into a separate function and
...
generalize it to handle more cases.
llvm-svn: 95045
2010-02-02 01:41:39 +00:00
Dan Gohman
7e5f1b2773
Various code simplifications.
...
llvm-svn: 95044
2010-02-02 01:38:49 +00:00
Daniel Dunbar
13ad81bd70
Update CMake.
...
llvm-svn: 95041
2010-02-02 01:12:20 +00:00
Eric Christopher
14dfc3f6df
Don't need to check the last argument since it'll always be bool. We also
...
don't use TargetData here.
llvm-svn: 95040
2010-02-02 00:51:45 +00:00
Eric Christopher
9afa973203
More indentation/tabification fixes.
...
llvm-svn: 95036
2010-02-02 00:13:06 +00:00
Eric Christopher
1408234753
Untabify previous commit.
...
llvm-svn: 95035
2010-02-02 00:06:55 +00:00
Nate Begeman
0b810279c8
Kill the Mach-O writer, and temporarily make filetype=obj an error.
...
The MCStreamer based assemblers will take over for this functionality.
llvm-svn: 95033
2010-02-01 23:56:58 +00:00
Eric Christopher
56e4182c49
Formatting.
...
llvm-svn: 95027
2010-02-01 23:25:03 +00:00
Johnny Chen
5b66b31774
MOVi16 should also be marked as a UnaryDP instruction, i.e., it doesn't have a
...
Rn operand.
llvm-svn: 95025
2010-02-01 23:06:04 +00:00
Bill Wendling
c5829c4a50
Add "dump" method to IVUsersOneStride.
...
llvm-svn: 95022
2010-02-01 22:51:23 +00:00
Evan Cheng
a49d8e6d38
Fix PR6196. GV callee may not be a function.
...
llvm-svn: 95017
2010-02-01 22:40:09 +00:00
Mon P Wang
d74e0023c5
Improve EXTRACT_VECTOR_ELT patch based on comments from Duncan
...
llvm-svn: 95012
2010-02-01 22:15:09 +00:00
Bob Wilson
d517b52012
Add an option to GVN to remove all partially redundant loads. This is currently
...
disabled by default. This divides the existing load PRE code into 2 phases:
first it checks that it is safe to move the load to each of the predecessors
where it is unavailable, and then if it is safe, the code is changed to move
the load. Radar 7571861.
llvm-svn: 95007
2010-02-01 21:17:14 +00:00
Chris Lattner
f5edeebd8c
eliminate a bunch of pointless LLVMContext arguments.
...
llvm-svn: 95001
2010-02-01 20:48:08 +00:00
Duncan Sands
dddba06e9e
Fix typo "of" -> "or" and change the way a line was formatted to fit
...
into 80 columns to match my artistic preferences.
llvm-svn: 95000
2010-02-01 20:42:02 +00:00
Chris Lattner
94eb4b285b
fix PR6195, a bug constant folding scalar -> vector compares.
...
llvm-svn: 94997
2010-02-01 20:04:40 +00:00
Dale Johannesen
0b30cfc57e
fix PR 6157. Testcase pending.
...
llvm-svn: 94996
2010-02-01 19:54:53 +00:00
Chris Lattner
9306ffa05a
cleanups.
...
llvm-svn: 94995
2010-02-01 19:54:45 +00:00
Chris Lattner
3c46e14137
fix PR6197 - infinite recursion in ipsccp due to block addresses
...
evaluateICmpRelation wasn't handling blockaddress.
llvm-svn: 94993
2010-02-01 19:35:08 +00:00
Mon P Wang
72c60c73af
Fixed a couple of optimization with EXTRACT_VECTOR_ELT that assumes the result
...
type is the same as the element type of the vector. EXTRACT_VECTOR_ELT can
be used to extended the width of an integer type. This fixes a bug for
Generic/vector-casts.ll on a ppc750.
llvm-svn: 94990
2010-02-01 19:03:18 +00:00
Dan Gohman
e5e1b7b05a
Generalize target-independent folding rules for sizeof to handle more
...
cases, and implement target-independent folding rules for alignof and
offsetof. Also, reassociate reassociative operators when it leads to
more folding.
Generalize ScalarEvolution's isOffsetOf to recognize offsetof on
arrays. Rename getAllocSizeExpr to getSizeOfExpr, and getFieldOffsetExpr
to getOffsetOfExpr, for consistency with analagous ConstantExpr routines.
Make the target-dependent folder promote GEP array indices to
pointer-sized integers, to make implicit casting explicit and exposed
to subsequent folding.
And add a bunch of testcases for this new functionality, and a bunch
of related existing functionality.
llvm-svn: 94987
2010-02-01 18:27:38 +00:00
Chris Lattner
846a52e228
fix rdar://7590304, a miscompilation of objc apps on arm. The caller
...
of objc message send was getting marked arm_apcscc, but the prototype
isn't. This is fine at runtime because objcmsgsend is implemented in
assembly. Only turn a mismatched caller and callee into 'unreachable'
if the callee is a definition.
llvm-svn: 94986
2010-02-01 18:11:34 +00:00
Chris Lattner
2cecedf081
fix rdar://7590304, an infinite loop in instcombine. In the invoke
...
case, instcombine can't zap the invoke for fear of changing the CFG.
However, we have to do something to prevent the next iteration of
instcombine from inserting another store -> undef before the invoke
thereby getting into infinite iteration between dead store elim and
store insertion.
Just zap the callee to null, which will prevent the next iteration
from doing anything.
llvm-svn: 94985
2010-02-01 18:04:58 +00:00
Bob Wilson
f65ba356e1
Fix pr6198 by moving the isSized() check to an outer conditional.
...
The testcase from pr6198 does not crash for me -- I don't know what's up with
that -- so I'm not adding it to the tests.
llvm-svn: 94984
2010-02-01 17:41:44 +00:00
Dan Gohman
de047f2051
Add a getNUWMul function.
...
llvm-svn: 94982
2010-02-01 16:38:14 +00:00
Dan Gohman
ede94e6850
Add a generalized form of ConstantExpr::getOffsetOf which works for
...
array types as well as struct types, and which accepts arbitrary
Constant indicies.
llvm-svn: 94981
2010-02-01 16:37:38 +00:00
Bruno Cardoso Lopes
aa8c429a53
MulOp is actually a Mips specific node, so do the match using Opcode. This fixes PR6192
...
llvm-svn: 94977
2010-02-01 12:16:39 +00:00
Evan Cheng
ed8ca56eeb
Undo r94946 now all the tests are passing again.
...
llvm-svn: 94970
2010-02-01 02:13:39 +00:00
Bruno Cardoso Lopes
1cb8b33d61
Fix stack size bug while using o32 abi
...
llvm-svn: 94969
2010-02-01 02:03:24 +00:00
Johnny Chen
b3562f7cf6
For MVNr and MVNs, we need to set Inst{25} = 0 so as not to confuse the decoder.
...
llvm-svn: 94955
2010-01-31 11:22:28 +00:00
Evan Cheng
b33dbc5019
Change TAILJMP's to be varargs and transfer implicit uses over from TCRETURN's. Otherwise the missing uses can make post-regalloc scheduling do bad things. This fixes 403.gcc.
...
llvm-svn: 94950
2010-01-31 07:28:44 +00:00
Evan Cheng
9adc6f46cf
Fix a missing check from my last commit.
...
llvm-svn: 94949
2010-01-31 07:27:31 +00:00
Evan Cheng
7f62def0f9
Avoid recursive sibcall's.
...
llvm-svn: 94946
2010-01-31 06:44:49 +00:00
Eli Friedman
0de0b3677a
Remove a completed item, add a couple new ones.
...
llvm-svn: 94945
2010-01-31 04:55:32 +00:00
Eli Friedman
a2cc2875fc
Simplify/generalize the xor+add->sign-extend instcombine.
...
llvm-svn: 94943
2010-01-31 04:29:12 +00:00
Eli Friedman
37a8197b61
Add a small transform: transform -(X<<Y) to (-X<<Y) when the shift has a single
...
use and X is free to negate.
llvm-svn: 94941
2010-01-31 02:30:23 +00:00
Sean Callanan
9aeccadce4
Moved InstallLexer() from the X86-specific AsmLexer
...
to the TargetAsmLexer class so that clients can
actually use the TargetAsmLexer they get from a
Target.
llvm-svn: 94940
2010-01-31 02:28:18 +00:00
Evan Cheng
d86d3fe0c3
Do not mark no-return calls tail calls. It'll screw up special calls like longjmp and it doesn't make much sense for performance reason. If my logic is faulty, please let me know.
...
llvm-svn: 94937
2010-01-31 00:59:31 +00:00
Bruno Cardoso Lopes
193e64c699
Fix PR6144. Reload GP before the emission of CALLSEQ_END to guarantee the right reload order
...
llvm-svn: 94915
2010-01-30 18:32:07 +00:00
Bruno Cardoso Lopes
7ee71912ed
Fix mov.d out register by using the FFR register class directly
...
llvm-svn: 94914
2010-01-30 18:29:19 +00:00
Anton Korobeynikov
25df248382
Fix a gross typo: ARMv6+ may or may not support unaligned memory operations.
...
Even if they are suported by the core, they can be disabled
(this is just a configuration bit inside some register).
Allow unaligned memops on darwin and conservatively disallow them otherwise.
llvm-svn: 94889
2010-01-30 14:08:12 +00:00
Bob Wilson
56600a15ad
Check alignment of loads when deciding whether it is safe to execute them
...
unconditionally. Besides checking the offset, also check that the underlying
object is aligned as much as the load itself.
llvm-svn: 94875
2010-01-30 04:42:39 +00:00
Evan Cheng
70f714fdbe
Allow more tailcall optimization: calls with inputs that are all passed in registers.
...
llvm-svn: 94873
2010-01-30 01:22:00 +00:00
Evan Cheng
2d5a75b42a
Don't forget to transfer target flag when inserting a tailcall instruction.
...
llvm-svn: 94872
2010-01-30 01:16:15 +00:00
Devang Patel
160c92dd19
Emit declaration DIE for the class static variables.
...
llvm-svn: 94870
2010-01-30 01:08:30 +00:00
Daniel Dunbar
76e5d70c57
MC/X86 AsmParser: Handle absolute memory operands correctly. We were doing
...
something totally broken and parsing them as immediates, but the .td file also
had the wrong match class so things sortof worked. Except, that is, that we
would parse
movl $0, %eax
as
movl 0, %eax
Feel free to guess how well that worked.
llvm-svn: 94869
2010-01-30 01:02:48 +00:00
Dale Johannesen
e057403835
Fix a case where debug_value could affect codegen.
...
llvm-svn: 94866
2010-01-30 00:57:47 +00:00
Bob Wilson
4b71b6c179
Use more specific types to avoid casts. No functionality change.
...
llvm-svn: 94863
2010-01-30 00:41:10 +00:00
Daniel Dunbar
f05d00787a
X86.td: Refactor to bring operands that use print_pcrel_imm together.
...
llvm-svn: 94861
2010-01-30 00:24:12 +00:00
Daniel Dunbar
a97adee959
AsmMatcher/X86: Separate out sublass for memory operands that have no segment
...
register, and use to cleanup a FIXME in X86AsmParser.cpp.
llvm-svn: 94859
2010-01-30 00:24:00 +00:00
Jakob Stoklund Olesen
e27dc727e2
Keep iterating over all uses when meeting a phi node in AllUsesOfValueWillTrapIfNull().
...
This bug was exposed by my inliner cost changes in r94615, and caused failures
of lencod on most architectures when building with LTO.
This patch fixes lencod and 464.h264ref on x86-64 (and likely others).
llvm-svn: 94858
2010-01-29 23:54:14 +00:00
Johnny Chen
34a6afc68d
Modified encoding bits specification for VFP instructions. In particular, the D
...
bit (Inst{22}) and the M bit (Inst{5}) should be left unspecified. For binary
format instructions, Inst{6} and Inst{4} need to specified for proper decodings.
llvm-svn: 94855
2010-01-29 23:21:10 +00:00
Dan Gohman
5ded1424b0
Print a comment next to "materializable" global values, to distinguish
...
them from values that are not actually defined in the module.
llvm-svn: 94854
2010-01-29 23:12:36 +00:00
Evan Cheng
25217ffaed
PPC is not ready for sibcall optimization.
...
llvm-svn: 94853
2010-01-29 23:05:56 +00:00
Bob Wilson
1b8453067b
Preserve load alignment in instcombine transformations. I've been unable to
...
create a testcase where this matters. The select+load transformation only
occurs when isSafeToLoadUnconditionally is true, and in those situations,
instcombine also changes the underlying objects to be aligned. This seems
like a good idea regardless, and I've verified that it doesn't pessimize
the subsequent realignment.
llvm-svn: 94850
2010-01-29 22:39:21 +00:00
Dale Johannesen
ad00f03e86
Add assertion to humor the paranoid.
...
llvm-svn: 94843
2010-01-29 21:21:28 +00:00
Victor Hernandez
6b7f4216b6
We were not writing bitcode for function-local metadata whose operands have been erased (making it not have any more function-local operands)
...
llvm-svn: 94842
2010-01-29 21:19:19 +00:00
Eric Christopher
5a0e174863
Revert my last couple of patches. They appear to have broken bison.
...
llvm-svn: 94841
2010-01-29 21:16:24 +00:00
Bob Wilson
34e10c2218
Use uint64_t instead of unsigned for offsets and sizes.
...
llvm-svn: 94835
2010-01-29 20:34:28 +00:00
Bob Wilson
7c42b9d51e
Improve isSafeToLoadUnconditionally to recognize that GEPs with constant
...
indices are safe if the result is known to be within the bounds of the
underlying object.
llvm-svn: 94829
2010-01-29 19:19:08 +00:00
Devang Patel
aedd6f5b33
Add size and location info in DW_TAG_class_type descriptor.
...
llvm-svn: 94822
2010-01-29 18:34:58 +00:00
Devang Patel
7f8be9ba95
Before inserting llvm.dbg.declare intrinsic at the end of a basic block, check whether the basic block has a terminator or not.
...
This API is used by clang and the test case is test/CodeGen/debug-info-crash.c in clang module.
llvm-svn: 94820
2010-01-29 18:30:57 +00:00
Benjamin Kramer
ef14f80e95
Fix MSVC build.
...
llvm-svn: 94809
2010-01-29 15:19:06 +00:00
Benjamin Kramer
b17c58674e
Convert some users of ftostr to raw_ostream.
...
llvm-svn: 94808
2010-01-29 14:42:22 +00:00
Benjamin Kramer
6bee24ae9a
Use llvm::format instead of ftostr (which just calls sprintf).
...
llvm-svn: 94807
2010-01-29 14:40:33 +00:00
Duncan Sands
3327498095
Change the SREM case to match the logic in the IR version ComputeMaskedBits.
...
llvm-svn: 94805
2010-01-29 09:45:26 +00:00
Evan Cheng
297a494f55
Catch more trivial tail call opportunities: no inputs and output types match.
...
llvm-svn: 94804
2010-01-29 06:45:59 +00:00
Duncan Sands
c8a3e56870
Having RHSKnownZero and RHSKnownOne be alternative names for KnownZero and KnownOne
...
(via APInt &RHSKnownZero = KnownZero, etc) seems dangerous and confusing to me: it
is easy not to notice this, and then wonder why KnownZero/RHSKnownZero changed
underneath you when you modified RHSKnownZero/KnownZero etc. So get rid of this.
No intended functionality change (tested with "make check" + llvm-gcc bootstrap).
llvm-svn: 94802
2010-01-29 06:18:46 +00:00
Duncan Sands
26cd6bd0b0
It looks like the changes to the SRem logic of SimplifyDemandedUseBits
...
(fix for PR6165) are needed here too.
llvm-svn: 94801
2010-01-29 06:18:37 +00:00
Eric Christopher
9b3c02b7da
Make strcpy_chk lower to strcpy if we have a safe size.
...
llvm-svn: 94783
2010-01-29 01:37:11 +00:00
Eric Christopher
997f7ca8c5
Add constant support to object size handling and remove default
...
lowering. We'll either figure it out, or not and be lowered by
SelectionDAGBuild.
Add test.
llvm-svn: 94775
2010-01-29 01:09:57 +00:00
Bill Wendling
48816a0b3f
Generic reformatting and comment fixing. No functionality change.
...
llvm-svn: 94771
2010-01-29 00:52:43 +00:00
Bill Wendling
8277838cf8
Add newline to debugging output, and fix some grammar-os in comment.
...
llvm-svn: 94765
2010-01-29 00:27:39 +00:00
Sean Callanan
82436d1666
Added a custom TableGen backend to support the
...
enhanced disassembler, and the necessary makefile
rules to build the table for X86.
llvm-svn: 94764
2010-01-29 00:21:04 +00:00
Victor Hernandez
006b53f199
mem2reg erases the dbg.declare intrinsics that it converts to dbg.val intrinsics
...
llvm-svn: 94763
2010-01-29 00:01:35 +00:00
Bill Wendling
954cb187e0
Assign the ordering of SDNodes in a much less intrusive fashion. After the
...
"visit*" method is called, take the newly created nodes, walk them in a DFS
fashion, and if they don't have an ordering set, then give it one.
llvm-svn: 94757
2010-01-28 21:51:40 +00:00
Dan Gohman
a424b9fbd1
Remove the folding rule
...
getelementptr (i8* inttoptr (i64 1 to i8*), i32 -1)
to
inttoptr (i64 0 to i8*)
from the VMCore constant folder. It didn't handle sign-extension properly
in the case where the source integer is smaller than a pointer size. And,
it relied on an assumption about sizeof(i8).
The Analysis constant folder still folds these kinds of things; it has
access to TargetData, so it can do them right.
Add a testcase which tests that the VMCore constant folder doesn't
miscompile this, and that the Analysis folder does fold it.
llvm-svn: 94750
2010-01-28 18:08:26 +00:00
Benjamin Kramer
29063eac23
Replace strcpy with memcpy when we have the length around anyway.
...
llvm-svn: 94746
2010-01-28 18:04:38 +00:00
Duncan Sands
3a48b87c54
Fix PR6165. The bug was that LHSKnownZero was being and'd with DemandedMask
...
when it should have been and'd with LowBits. Fix that and while there beef
up the logic in the case of a negative LHS.
llvm-svn: 94745
2010-01-28 17:22:42 +00:00
Douglas Gregor
1051937c21
Add llvm::Program::ChangeStderrToBinary().
...
llvm-svn: 94743
2010-01-28 06:42:08 +00:00
Dan Gohman
9f4ea22c88
Check Type::isSized before calling ScalarEvolution::getAllocSizeExpr,
...
rather than after.
llvm-svn: 94742
2010-01-28 06:32:46 +00:00
Chris Lattner
cc9a6f0580
convert the last 3 targets to use EmitFunctionBody() now that
...
it has before/end body hooks.
lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp | 49 ++-----------
lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp | 87 ++++++------------------
lib/Target/XCore/AsmPrinter/XCoreAsmPrinter.cpp | 56 +++------------
test/CodeGen/XCore/ashr.ll | 2
4 files changed, 48 insertions(+), 146 deletions(-)
llvm-svn: 94741
2010-01-28 06:22:43 +00:00
Dan Gohman
a9be73929f
Make getAlignOf return an i64, for consistency with getSizeOf and
...
getOffsetOf, and remove the comment about assuming i8 is byte-aligned,
which is no longer applicable.
llvm-svn: 94738
2010-01-28 02:43:22 +00:00
Dan Gohman
cf9138307d
Remove SCEVAllocSizeExpr and SCEVFieldOffsetExpr, and in their place
...
use plain SCEVUnknowns with ConstantExpr::getSizeOf and
ConstantExpr::getOffsetOf constants. This eliminates a bunch of
special-case code.
Also add code for pattern-matching these expressions, for clients that
want to recognize them.
Move ScalarEvolution's logic for expanding array and vector sizeof
expressions into an element count times the element size, to expose
the multiplication to subsequent folding, into the regular constant
folder.
llvm-svn: 94737
2010-01-28 02:15:55 +00:00
Chris Lattner
c968f4475e
add target hooks for emitting random gunk before and after the function body.
...
llvm-svn: 94732
2010-01-28 01:58:58 +00:00
Evan Cheng
346af88396
Fix a bug introduced by r94490 where it created a X86ISD::CMP whose output type is different from its inputs.
...
This fixes PR6146.
llvm-svn: 94731
2010-01-28 01:57:22 +00:00
Chris Lattner
125c118cd8
switch blackfin to the default runOnMachineFunction
...
llvm-svn: 94729
2010-01-28 01:54:33 +00:00
Chris Lattner
b662b7c801
eliminate a now-useless class.
...
llvm-svn: 94728
2010-01-28 01:50:22 +00:00
Chris Lattner
fd97a3369e
Switch MSP430, SPU, Sparc, and SystemZ to use EmitFunctionBody().
...
Diffstat:
6 files changed, 30 insertions(+), 284 deletions(-)
llvm-svn: 94727
2010-01-28 01:48:52 +00:00
Jim Grosbach
54c0530834
Update of 94055 to track the IR level call site information via an intrinsic.
...
This allows code gen and the exception table writer to cooperate to make sure
landing pads are associated with the correct invoke locations.
llvm-svn: 94726
2010-01-28 01:45:32 +00:00
Chris Lattner
73de5fbfc3
Give AsmPrinter the most common expected implementation of
...
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define
runOnMachineFunction.
llvm-svn: 94722
2010-01-28 01:28:58 +00:00
Chris Lattner
fa1f67ea38
switch ARM to EmitFunctionBody().
...
llvm-svn: 94719
2010-01-28 01:10:34 +00:00
Chris Lattner
565896b9eb
emit a 0 byte instead of a noop if a function is empty on darwin.
...
"0" is nice and target independent.
llvm-svn: 94718
2010-01-28 01:06:32 +00:00
Chris Lattner
94a946cac4
Remove the argument from EmitJumpTableInfo, because it doesn't need it.
...
Move the X86 implementation of function body emission up to
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.
llvm-svn: 94716
2010-01-28 01:02:27 +00:00
Chris Lattner
2b796241a7
Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
...
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.
llvm-svn: 94708
2010-01-28 00:19:24 +00:00
Chris Lattner
80108921be
don't emit constant pools twice.
...
llvm-svn: 94706
2010-01-28 00:15:18 +00:00
Chris Lattner
cd99546b03
rename printVisibility to EmitVisibility and make it private,
...
constify EmitLinkage.
llvm-svn: 94705
2010-01-28 00:05:10 +00:00
Chris Lattner
56db8c3008
switch ARM to use EmitFunctionHeader.
...
llvm-svn: 94703
2010-01-27 23:58:11 +00:00
Chris Lattner
feba1e2495
eliminate the ARMFunctionInfo::Align member, using
...
MachineFunction::Alignment instead.
llvm-svn: 94701
2010-01-27 23:37:36 +00:00
Chris Lattner
1aef3717bd
switch blackfin to use EmitFunctionHeader. BlackfinAsmPrinter.cpp
...
is now less than 200 LOC!
llvm-svn: 94699
2010-01-27 23:26:37 +00:00
Chris Lattner
5d9fb4b746
switch mips to use the shared EmitFunctionHeader() function
...
llvm-svn: 94698
2010-01-27 23:23:58 +00:00
Dale Johannesen
6eb8e13236
If the only use of something is a DEBUG_VALUE, don't
...
let that stop it from being deleted, and change the
DEBUG_VALUE value to undef.
llvm-svn: 94694
2010-01-27 22:12:36 +00:00
Dale Johannesen
77b108e17b
Treat MO_REG 0 location as undefined in DEBUG_VALUE,
...
per document.
llvm-svn: 94693
2010-01-27 22:11:16 +00:00
Victor Hernandez
7fb0c1b88e
Need to recurse for all operands of function-local metadata; and handle Instructions (which map to themselves)
...
llvm-svn: 94691
2010-01-27 22:03:03 +00:00
Bob Wilson
7577e948e4
Avoid creating redundant PHIs in SSAUpdater::GetValueInMiddleOfBlock.
...
This was already being done in SSAUpdater::GetValueAtEndOfBlock so I've
just changed SSAUpdater to check for existing PHIs in both places.
llvm-svn: 94690
2010-01-27 22:01:02 +00:00
Ted Kremenek
8fafa93092
Update CMake build.
...
llvm-svn: 94687
2010-01-27 20:44:12 +00:00
Jeffrey Yasskin
091217be6f
Kill ModuleProvider and ghost linkage by inverting the relationship between
...
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.
Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods. The bindings to
other languages still use the ModuleProvider concept. It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.
Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735 .
llvm-svn: 94686
2010-01-27 20:34:15 +00:00
Benjamin Kramer
1266d46d32
Don't bother with sprintf, just pass the Twine through.
...
llvm-svn: 94684
2010-01-27 19:58:47 +00:00
Benjamin Kramer
40582a891c
Use the less expensive getName function instead of getNameStr.
...
llvm-svn: 94683
2010-01-27 19:46:52 +00:00
Chandler Carruth
c07bd40b3e
Silence GCC warnings with asserts turned off. No functionality change.
...
llvm-svn: 94673
2010-01-27 10:27:10 +00:00
Mikhail Glushenkov
76be2d1cca
Make SMDiagnostic::Print a const method.
...
llvm-svn: 94672
2010-01-27 10:13:28 +00:00
Mikhail Glushenkov
84afae33a9
Trailing whitespace.
...
llvm-svn: 94671
2010-01-27 10:13:11 +00:00
Chris Lattner
bc1e6f0873
add a new AsmPrinter::EmitFunctionEntryLabel virtual function,
...
which allows targets to override function entry label emission.
Use it to convert linux/ppc to use EmitFunctionHeader().
llvm-svn: 94667
2010-01-27 07:21:55 +00:00
Evan Cheng
85476f304c
Perform trivial tail call optimization for callees with "C" ABI. These are done
...
even when -tailcallopt is not specified and it does not require changing ABI.
First case is the most trivial one. Perform tail call optimization when both
the caller and callee do not return values and when the callee does not take
any input arguments.
llvm-svn: 94664
2010-01-27 06:25:16 +00:00
Chris Lattner
318b489d5b
merge two ifs
...
llvm-svn: 94650
2010-01-27 02:18:21 +00:00
Chris Lattner
65f4733b77
some cleanups.
...
llvm-svn: 94649
2010-01-27 02:12:20 +00:00
Chris Lattner
711e701f1c
no need to check for null
...
llvm-svn: 94648
2010-01-27 02:04:20 +00:00
Chris Lattner
57f064722a
ppc/linux isn't ready for this and it was an accident that it was included.
...
This should fix a bunch of linux buildbot failures.
llvm-svn: 94643
2010-01-27 01:02:43 +00:00
Victor Hernandez
477d9274bb
When converting dbg.declare to dbg.value, attach promoted store's debug metadata to dbg.value
...
llvm-svn: 94634
2010-01-27 00:44:36 +00:00
Victor Hernandez
38e810d870
Linker needs to do deep-copy of function-local metadata to update references to function arguments
...
llvm-svn: 94632
2010-01-27 00:30:42 +00:00
Chris Lattner
2ab11001cc
use existing basic block numbers instead of recomputing
...
a new set of them.
llvm-svn: 94631
2010-01-27 00:20:02 +00:00
Chris Lattner
9da5e1f650
Switch MSP430, CellSPU, SystemZ, Darwin/PPC, Alpha, and Sparc to
...
EmitFunctionHeader:
7 files changed, 16 insertions(+), 210 deletions(-)
llvm-svn: 94630
2010-01-27 00:17:20 +00:00
Evan Cheng
640b58b8d7
Clarify what -tailcallopt option actually do.
...
llvm-svn: 94628
2010-01-27 00:10:09 +00:00
Jim Grosbach
a3575ca846
Adjust setjmp instruction sequence to not need 32-bit alignment padding
...
llvm-svn: 94627
2010-01-27 00:07:20 +00:00
Evan Cheng
67a69dd2ed
Eliminate target hook IsEligibleForTailCallOptimization.
...
Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.
llvm-svn: 94626
2010-01-27 00:07:07 +00:00
Evan Cheng
d10089a5b4
Restore to pre-94570 state.
...
llvm-svn: 94625
2010-01-27 00:00:57 +00:00
Chris Lattner
bac7498f8e
mcize label emission for functions.
...
llvm-svn: 94624
2010-01-26 23:53:39 +00:00
Chris Lattner
fc2e376a15
use EmitLinkage for functions as well as globals. One output
...
change is that we now use ".linkonce discard" for global variables
instead of ".linkonce samesize". These should be the same, just less
strict. If anyone is interested in mcizing MCSection for COFF targets,
this should be easy to fix.
llvm-svn: 94623
2010-01-26 23:51:52 +00:00
Chris Lattner
dbf5a7617d
pull linkage emission code out to a new EmitLinkage function.
...
llvm-svn: 94621
2010-01-26 23:47:12 +00:00
Chris Lattner
22fc38dd4f
rearrange some directives, no functionality change.
...
llvm-svn: 94620
2010-01-26 23:41:48 +00:00
Victor Hernandez
2b17e2a452
Avoid extra calls to MD->getNumOperands()
...
llvm-svn: 94618
2010-01-26 23:29:09 +00:00
Evan Cheng
75766332f9
Ignore 'forced' tailcall opt in fastisel mode.
...
llvm-svn: 94617
2010-01-26 23:28:40 +00:00
Chris Lattner
56e9b5975d
remove a noop function.
...
llvm-svn: 94616
2010-01-26 23:26:29 +00:00
Jakob Stoklund Olesen
0234628284
Fix inline cost predictions with SCIENCE.
...
After running a batch of measurements, it is clear that the inliner metrics
need some adjustments:
Own argument bonus: 20 -> 5
Outgoing argument penalty: 0 -> 5
Alloca bonus: 10 -> 5
Constant instr bonus: 7 -> 5
Dead successor bonus: 40 -> 5*(avg instrs/block)
The new cost metrics are generaly 25 points higher than before, so we may need
to move thresholds.
With this change, InlineConstants::CallPenalty becomes a political correction:
if (!isa<IntrinsicInst>(II) && !callIsSmall(CS.getCalledFunction()))
NumInsts += InlineConstants::CallPenalty + CS.arg_size();
The code size is accurately modelled by CS.arg_size(). CallPenalty is added
because calls tend to take a long time, so it may not be worth it to inline a
function with lots of calls.
All of the political corrections are in the InlineConstants namespace:
IndirectCallBonus, CallPenalty, LastCallToStaticBonus, ColdccPenalty,
NoreturnPenalty.
llvm-svn: 94615
2010-01-26 23:21:56 +00:00
Chris Lattner
c7b91156e4
now that enough stuff is constified, move function header printing
...
logic up from X86 into the common code. The other targets will
hopefully start using this soon.
llvm-svn: 94614
2010-01-26 23:18:44 +00:00
Chris Lattner
76555b513c
constify a bunch of dwarf stuff now that the registerinfo method
...
is constified.
llvm-svn: 94613
2010-01-26 23:18:02 +00:00
Chris Lattner
f13e5f7323
constify a method argument.
...
llvm-svn: 94612
2010-01-26 23:15:09 +00:00
Evan Cheng
c35b5a123b
Allow some automatic tailcall optimization without changing ABI.
...
llvm-svn: 94611
2010-01-26 23:13:04 +00:00
Evan Cheng
1b7b9e852c
Delete blank lines that bug me.
...
llvm-svn: 94610
2010-01-26 23:07:57 +00:00
Chris Lattner
3ba6da49f5
call emitconstantpool and emitjumptable like other targets.
...
llvm-svn: 94601
2010-01-26 22:06:58 +00:00
Chris Lattner
b657c4cdc3
emit jump table an alias ".set" directives through MCStreamer as
...
assignments.
.set x, a-b
is the same as:
x = a-b
llvm-svn: 94596
2010-01-26 21:53:08 +00:00
Chris Lattner
37bc78a5e2
fix CastInst::castIsValid to reject aggregate types, fixing PR6153:
...
llvm-as: t.ll:1:25: error: invalid cast opcode for cast from '[4 x i8]' to '[1 x i32]'
@x = constant [1 x i32] bitcast ([4 x i8] c"abcd" to [1 x i32])
^
llvm-svn: 94595
2010-01-26 21:51:43 +00:00
Devang Patel
1973df2e3f
Use AssertingVH, just to be paranoid.
...
llvm-svn: 94593
2010-01-26 21:39:14 +00:00
Jakob Stoklund Olesen
87256d8fe1
Revert test polarity to match comment and desired outcome. Remove undeserved bonus.
...
A GEP with all constant indices is already considered free by
analyzeBasicBlock(), so don't give it an extra bonus in
CountCodeReductionForAlloca().
This patch should remove a small positive bias toward inlining functions with
variable-index GEPs, and remove a smaller negative bias from functions with
all-constant index GEPs.
llvm-svn: 94591
2010-01-26 21:31:35 +00:00
Jakob Stoklund Olesen
832e79ca32
Remove dead code.
...
Functions containing indirectbr are marked NeverInline by analyzeBasicBlock(),
so there is no point in giving indirectbr special treatment in
CountCodeReductionForConstant. It is never called.
No functional change intended.
llvm-svn: 94590
2010-01-26 21:31:30 +00:00
Jakob Stoklund Olesen
cab470b17a
Skip calculation of ArgumentWeights if it will never be used.
...
Save a few bytes by allocating the correct size vector.
No functional change intended.
llvm-svn: 94589
2010-01-26 21:31:24 +00:00
Devang Patel
303a1beea6
Emit DW_AT_containing_type attribute for a class if containing type is known.
...
llvm-svn: 94587
2010-01-26 21:16:06 +00:00
Devang Patel
f4b25d6d7b
Add extra element to composite type. This new element will be used to record c++ class that holds current class's vtable.
...
llvm-svn: 94586
2010-01-26 21:14:59 +00:00
Chris Lattner
ff234e09b9
Eliminate SetDirective, and replace it with HasSetDirective.
...
Default HasSetDirective to true, since most targets have it.
The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16. All of these except pic16 are normal ELF targets, so
they almost certainly have it.
llvm-svn: 94585
2010-01-26 20:40:54 +00:00
Evan Cheng
345ec3166e
Delete dead code.
...
llvm-svn: 94583
2010-01-26 20:36:21 +00:00
Rafael Espindola
dcb03f0f6b
Emit .comm alignment in bytes but .align in powers of 2 for ARM ELF.
...
Original patch by Sandeep Patel and updated by me.
llvm-svn: 94582
2010-01-26 20:21:43 +00:00
Chris Lattner
3dd38a8112
eliminate MCAsmInfo::NeedsSet: we now just use .set on any platform
...
that has it.
llvm-svn: 94581
2010-01-26 20:20:43 +00:00
Chris Lattner
526f560424
don't set to the default value.
...
llvm-svn: 94580
2010-01-26 20:17:34 +00:00