Chris Lattner
445d8c6b50
fold comparisons of gep'd alloca points with null to false,
...
implementing PR12013. We now compile the testcase to:
__Z4testv: ## @_Z4testv
## BB#0: ## %_ZN4llvm15SmallVectorImplIiE9push_backERKi.exit
pushq %rbx
subq $64, %rsp
leaq 32(%rsp), %rbx
movq %rbx, (%rsp)
leaq 64(%rsp), %rax
movq %rax, 16(%rsp)
movl $1, 32(%rsp)
leaq 36(%rsp), %rax
movq %rax, 8(%rsp)
leaq (%rsp), %rdi
callq __Z1gRN4llvm11SmallVectorIiLj8EEE
movq (%rsp), %rdi
cmpq %rbx, %rdi
je LBB0_2
## BB#1:
callq _free
LBB0_2: ## %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit
addq $64, %rsp
popq %rbx
ret
instead of:
__Z4testv: ## @_Z4testv
## BB#0:
pushq %rbx
subq $64, %rsp
xorl %eax, %eax
leaq (%rsp), %rbx
addq $32, %rbx
movq %rbx, (%rsp)
movq %rbx, 8(%rsp)
leaq 64(%rsp), %rcx
movq %rcx, 16(%rsp)
je LBB0_2
## BB#1:
movl $1, 32(%rsp)
movq %rbx, %rax
LBB0_2: ## %_ZN4llvm15SmallVectorImplIiE9push_backERKi.exit
addq $4, %rax
movq %rax, 8(%rsp)
leaq (%rsp), %rdi
callq __Z1gRN4llvm11SmallVectorIiLj8EEE
movq (%rsp), %rdi
cmpq %rbx, %rdi
je LBB0_4
## BB#3:
callq _free
LBB0_4: ## %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit
addq $64, %rsp
popq %rbx
ret
This doesn't shrink clang noticably though.
llvm-svn: 150944
2012-02-20 00:42:49 +00:00
Chandler Carruth
3bb7d41a35
Switch to a more idiomatic way of silencing unused variable warnings in
...
release builds. Silences clang's -Wself-assign.
llvm-svn: 150942
2012-02-20 00:02:49 +00:00
Chandler Carruth
0d887dd0b9
Move constructors out-of-line and flesh out their documentation. No
...
functionality changed. This is in preparation for some refactoring of
how this class behaves.
llvm-svn: 150941
2012-02-20 00:02:47 +00:00
Nick Lewycky
73be5e31a6
Move EvaluateFunction and EvaluateBlock into a class, and make the class store
...
the information that they pass around between them. No functionality change!
llvm-svn: 150939
2012-02-19 23:26:27 +00:00
Benjamin Kramer
c84ded88ea
Silence operator precedence warning.
...
llvm-svn: 150921
2012-02-19 12:25:07 +00:00
NAKAMURA Takumi
652e0139da
autoconf/m4/visibility_inlines_hidden.m4: Tweak for cygwin-g++-4.5.3. It folded conftest regardress of attributge((noinline)) with >=O1 .
...
llvm-svn: 150920
2012-02-19 12:05:12 +00:00
Ahmed Charles
636a3d618c
Remove dead code. Improve llvm_unreachable text. Simplify some control flow.
...
llvm-svn: 150918
2012-02-19 11:37:01 +00:00
Ahmed Charles
a4704ab080
StringRef'ize EmitSourceFileHeader().
...
llvm-svn: 150917
2012-02-19 11:35:20 +00:00
Craig Topper
de121a1000
Remove some unneeded includes and fix ordering in X86ISelLowering.cpp. Remove unneeded 'using namespace'.
...
llvm-svn: 150916
2012-02-19 07:15:48 +00:00
Lang Hames
13b11527d8
Add machinery for pushing live ranges onto bundle starts while bundling.
...
llvm-svn: 150915
2012-02-19 07:13:05 +00:00
Lang Hames
8140e84757
Simplify moveEnteringDownFrom rules.
...
llvm-svn: 150914
2012-02-19 06:13:56 +00:00
Craig Topper
65a4ceea1e
Unify all shuffle mask checking functions take a mask and VT instead of VectorShuffleSDNode.
...
llvm-svn: 150913
2012-02-19 05:41:45 +00:00
Lang Hames
ed7f1f0b08
Skip through instructions rather than operands when looking for last use slot.
...
llvm-svn: 150912
2012-02-19 04:38:25 +00:00
NAKAMURA Takumi
5adeb93d8a
APFloat::toString(): Fix overrun at scanning.
...
FYI, clang/test/SemaTemplate/template-id-printing.cpp had been failing due to it on cygwin-clang.
llvm-svn: 150911
2012-02-19 03:18:29 +00:00
Lang Hames
da2ed648b5
Fix TODO and trailing whitespace.
...
llvm-svn: 150910
2012-02-19 03:09:55 +00:00
Lang Hames
4645a72763
Defer sanity checks on live intervals until after all have been updated. Hold (LiveInterval, LiveRange) pairs to update, rather than vregs.
...
llvm-svn: 150909
2012-02-19 03:00:30 +00:00
Craig Topper
3e5c04e432
Make a bunch of X86ISelLowering shuffle functions static now that they are no longer needed by isel.
...
llvm-svn: 150908
2012-02-19 02:53:47 +00:00
Jia Liu
608dc6e257
comment fix ARM.h
...
llvm-svn: 150904
2012-02-19 02:04:03 +00:00
Jia Liu
e1d619691b
some comment fix for X86 and ARM
...
llvm-svn: 150902
2012-02-19 02:03:36 +00:00
Craig Topper
66a3597a4a
Add vmfunc instruction to X86 assembler and disassembler.
...
llvm-svn: 150899
2012-02-19 01:39:49 +00:00
Ahmed Charles
4f9484722c
Fix issue with bitwise and precedence.
...
llvm-svn: 150897
2012-02-18 22:56:41 +00:00
Talin
f2291c908b
Hashing.h - utilities for hashing various data types.
...
llvm-svn: 150890
2012-02-18 21:00:49 +00:00
Rafael Espindola
082d482981
White space fixes.
...
llvm-svn: 150886
2012-02-18 19:46:02 +00:00
Rafael Espindola
991356e89b
Temporarily disable this assert. Looks like it found a similar issue when
...
building bullet.
llvm-svn: 150885
2012-02-18 17:51:43 +00:00
Rafael Espindola
82d957593e
Don't skip debug instructions when looking for the insertion point of
...
the cast. If we do, we can end up with
inst1
--------------- < Insertion point
dbg inst
new inst
instead of the desired
inst1
new inst
--------------- < Insertion point
dbg inst
Another option would be for InsertNoopCastOfTo (or its callers) to move the
insertion point and we would end up with
inst1
dbg inst
new inst
--------------- < Insertion point
but that complicates the callers. This fixes PR12018 (and firefox's build).
llvm-svn: 150884
2012-02-18 17:22:58 +00:00
Jia Liu
b22310fda6
Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore.
...
llvm-svn: 150878
2012-02-18 12:03:15 +00:00
David Meyer
4d9547332c
On Cygwin/MingW, add SharedLibDir and LLVMToolDir to the library search path, since shared libraries are placed in 'bin'. (static libraries are still in 'lib').
...
llvm-svn: 150876
2012-02-18 10:03:19 +00:00
Craig Topper
57d3aaed78
Add X86InstrSVM.td that I forgot to add in r150873.
...
llvm-svn: 150874
2012-02-18 08:34:12 +00:00
Craig Topper
ed7aa46366
Add X86 assembler and disassembler support for AMD SVM instructions. Original patch by Kay Tiong Khoo. Few tweaks by me for code density and to reduce replication.
...
llvm-svn: 150873
2012-02-18 08:19:49 +00:00
Chandler Carruth
b54950bef4
Trivial cleanup to group the generic 'armvN' cases with the 'arm' case,
...
etc. No functionality changed.
llvm-svn: 150867
2012-02-18 04:34:17 +00:00
Eli Friedman
952d1f9f40
Fix a rather nasty regression from r150690: LHS != RHS does not imply LHS->stripPointerCasts() != RHS->stripPointerCasts().
...
llvm-svn: 150863
2012-02-18 03:29:25 +00:00
Chad Rosier
991aa50e44
Fix documentation.
...
llvm-svn: 150860
2012-02-18 01:38:41 +00:00
Eric Christopher
c767c51b5d
Testcase for the previous commit.
...
llvm-svn: 150852
2012-02-18 00:05:45 +00:00
Lang Hames
59761985dd
Bring HMEditor into line with LLVM coding standards.
...
llvm-svn: 150851
2012-02-17 23:43:40 +00:00
Eric Christopher
81e2bf2b77
Ignore the lifetime intrinsics in fast-isel.
...
llvm-svn: 150848
2012-02-17 23:03:39 +00:00
Jakob Stoklund Olesen
a2755ea8f2
Don't print out pointer values in SUnit::dump().
...
llvm-svn: 150842
2012-02-17 21:44:51 +00:00
Matt Beaumont-Gay
714b99dc84
Sink variable into assert
...
llvm-svn: 150841
2012-02-17 21:40:48 +00:00
Lang Hames
a9afc6ac4a
Add support for regmask slots to HMEditor. Also fixes a comment error.
...
llvm-svn: 150840
2012-02-17 21:29:41 +00:00
Kevin Enderby
1eb5cd9b74
Fix typo in comment ldopen() -> dlopen().
...
llvm-svn: 150836
2012-02-17 19:26:00 +00:00
Jakob Stoklund Olesen
4fad5b2b9e
Handle regmask operands in ARMInstrInfo.
...
llvm-svn: 150833
2012-02-17 19:23:15 +00:00
Kevin Enderby
86f94ce509
Put back the initializing the targets in the disassembler API with a comment as
...
to why this is needed. This broke the darwin's otool(1) program. This change
was made in r144385.
llvm-svn: 150832
2012-02-17 19:18:29 +00:00
Jakob Stoklund Olesen
96732a438d
Fix ARMBaseInstrInfo::getInstrLatency for calls.
...
Calls always clobber CPSR.
llvm-svn: 150831
2012-02-17 19:07:59 +00:00
Jakob Stoklund Olesen
a0cf42f2e1
Transfer regmasks to MRI.
...
MRI keeps track of which physregs have been used. Make sure it gets
updated with all the regmask-clobbered registers.
Delete the closePhysRegsUsed() function which isn't necessary.
llvm-svn: 150830
2012-02-17 19:07:56 +00:00
Dan Gohman
0155f30a9c
Calls and invokes with the new clang.arc.no_objc_arc_exceptions
...
metadata may still unwind, but only in ways that the ARC
optimizer doesn't need to consider. This permits more
aggressive optimization.
llvm-svn: 150829
2012-02-17 18:59:53 +00:00
Lang Hames
b9057d5fae
Refactor 'handleMove' code in live intervals. Clients of LiveIntervals won't see
...
any changes.
Internally this adds a private inner class HMEditor, to LiveIntervals. HMEditor provides
an API for updating live intervals when code is moved or bundled.
llvm-svn: 150826
2012-02-17 18:44:18 +00:00
Dan Gohman
9017b846d4
Remove a comment about an alternative approach that wouldn't
...
actually work, at least as described. LLVM Metadata is not
intended to suppress LLVM IR rules, as it can be stripped at
any time.
llvm-svn: 150821
2012-02-17 18:33:38 +00:00
Jim Grosbach
905c952efa
Tidy up.
...
llvm-svn: 150820
2012-02-17 17:35:10 +00:00
David Chisnall
07f8d3e4e9
Generate the correct EH frame section types on Solaris, this time without breaking other platforms...
...
llvm-svn: 150819
2012-02-17 17:31:15 +00:00
David Chisnall
85dd309e85
Revert r150814. It turns out that there is a good reason for this after all...
...
llvm-svn: 150818
2012-02-17 16:51:02 +00:00
Jakob Stoklund Olesen
fd7d1b47ba
Revert r150288, "Allow Post-RA LICM to hoist reserved register reads."
...
This caused miscompilations on out-of-tree targets, and possibly i386 as
well.
I'll find some other way of hoisting %rip-relative loads from loops
containing calls.
llvm-svn: 150816
2012-02-17 16:40:44 +00:00
Richard Osborne
484980e37e
Fix typo in comment.
...
llvm-svn: 150815
2012-02-17 16:39:47 +00:00
David Chisnall
38e25ab513
Don't lazily allocate eh_frame. We're not lazily allocating things like the LSDA, which are only used when the eh frame is used, so this lazy allocation doesn't really make sense.
...
Fix the type of eh_frame on Solaris so that Sun ld doesn't fail to combine them (thus making it impossible for the unwind library to find them and breaking exceptions).
llvm-svn: 150814
2012-02-17 16:32:07 +00:00
David Chisnall
368d460d35
... and it's probably best to use the correct alignment, rather than just guessing that it's the same as the size.
...
llvm-svn: 150813
2012-02-17 16:30:39 +00:00
David Chisnall
8fa1716508
It turns out that putting an 8-byte symbol in a 4-byte section makes Solaris ld sulk. GNU ld is perfectly happy with it, which is worrying for a whole other set of reasons...
...
Thanks to Anton, Duncan and Rafael for helping me track this down.
Pointy hat to Rafael for introducing the bug in the first place.
llvm-svn: 150811
2012-02-17 16:05:50 +00:00
Nick Lewycky
aed0553360
Remove question.
...
llvm-svn: 150809
2012-02-17 09:55:20 +00:00
Jia Liu
9f6101191b
remove Emacs-tag form .cpp files in Mips Backend, and fix some typo.
...
llvm-svn: 150805
2012-02-17 08:55:11 +00:00
Eric Christopher
b23b32e43b
Typo in variable name.
...
llvm-svn: 150796
2012-02-17 07:08:46 +00:00
Craig Topper
ba172d2d59
Remove the last of the old vector_shuffle patterns from X86 isel.
...
llvm-svn: 150795
2012-02-17 07:02:34 +00:00
Nick Lewycky
68f9f9d9c8
Add support for invariant.start inside the static constructor evaluator. This is
...
useful to represent a variable that is const in the source but can't be constant
in the IR because of a non-trivial constructor. If globalopt evaluates the
constructor, and there was an invariant.start with no matching invariant.end
possible, it will mark the global constant afterwards.
llvm-svn: 150794
2012-02-17 06:59:21 +00:00
Akira Hatanaka
d608bac682
Do not promote i32 arguments to i64. This was causing unnecessary sign extension
...
instructions to be emitted.
llvm-svn: 150782
2012-02-17 02:20:26 +00:00
Bill Wendling
aa9a3eae79
Remove redundant comment. Use a more efficient datatype.
...
llvm-svn: 150780
2012-02-17 02:12:54 +00:00
Bill Wendling
0a8fec2762
Fix some grammar-os and formatting.
...
llvm-svn: 150779
2012-02-17 02:09:28 +00:00
Lang Hames
3eedcce906
Reverse iterator - should be incrementing rather than decrementing.
...
llvm-svn: 150778
2012-02-17 01:54:11 +00:00
Jia Liu
dd6c1cd4e8
add Emacs tag and fix some comment error in file headers
...
llvm-svn: 150775
2012-02-17 01:23:50 +00:00
Chad Rosier
fcd29ae390
[fast-isel] Add support for returning non-legal types with no sign- or zero-
...
entend flag.
llvm-svn: 150774
2012-02-17 01:21:28 +00:00
Lang Hames
d9f2152a2e
MachineScheduler shouldn't use/preserve LiveDebugVariables.
...
llvm-svn: 150773
2012-02-17 01:11:37 +00:00
Lang Hames
def9c61e4b
Oops - isRegLiveIntoSuccessor is used in non-assert builds now. Remove NDEBUG guards.
...
llvm-svn: 150771
2012-02-17 00:51:32 +00:00
Lang Hames
5bade3dc6e
Re-enable 150652 and 150654 - Make FPSCR non-reserved, and make MachineCSE bail on reserved registers. This *should* be safe as of r150786.
...
llvm-svn: 150769
2012-02-17 00:27:16 +00:00
Lang Hames
0d72bb49f0
Turn off assertion, conservatively compute liveness for live-in un-allocatable registers.
...
llvm-svn: 150768
2012-02-17 00:18:18 +00:00
Akira Hatanaka
b4d2ccf2ab
Remove comment.
...
llvm-svn: 150739
2012-02-16 22:52:29 +00:00
Chad Rosier
a0d3c75015
Remove unnecessary assignment to temporary, ResultReg.
...
llvm-svn: 150737
2012-02-16 22:45:33 +00:00
Bill Wendling
ec713ee4b4
Use –mcpu=generic, so that the test will not fail when run on an Intel Atom
...
processor, due to the Atom scheduler producing an instruction sequence that is
different from that which is expected.
Patch by Michael Spencer!
llvm-svn: 150736
2012-02-16 22:42:48 +00:00
Chad Rosier
42f96b96a2
Update credits.
...
llvm-svn: 150715
2012-02-16 18:54:41 +00:00
Jakob Stoklund Olesen
0cdf264491
Note x86 regmask operands in release notes.
...
llvm-svn: 150712
2012-02-16 18:22:39 +00:00
Jakob Stoklund Olesen
bc6ba479b6
Remove the YMM_HI_6_15 hack.
...
Call clobbers are now represented with register mask operands. The
regmask can easily represent the fact that xmm6 is call-preserved while
ymm6 isn't. This is automatically computed by TableGen from the
CalleeSavedRegs containing xmm6.
llvm-svn: 150709
2012-02-16 17:56:06 +00:00
Jakob Stoklund Olesen
97e3115dc2
Use the same CALL instructions for Windows as for everything else.
...
The different calling conventions and call-preserved registers are
represented with regmask operands that are added dynamically.
llvm-svn: 150708
2012-02-16 17:56:02 +00:00
Akira Hatanaka
4705b0cc1c
Remove trailing whitespace. Add newline.
...
llvm-svn: 150706
2012-02-16 17:48:20 +00:00
Benjamin Kramer
b0d75c2f4e
Disable machine copy propagation for now. It's known to be buggy (PR11940) and introduces subtle miscompiles in many places.
...
llvm-svn: 150703
2012-02-16 17:29:50 +00:00
Benjamin Kramer
08f18b1b74
Revert "InstSimplify: Strip pointer casts early."
...
Turns out this isn't safe, because the code below depends on LHS and RHS having
the same type.
llvm-svn: 150695
2012-02-16 15:19:59 +00:00
Benjamin Kramer
3d27f71f2d
InstSimplify: Strip pointer casts early.
...
llvm-svn: 150694
2012-02-16 15:03:04 +00:00
Benjamin Kramer
ea51f62e4b
InstSimplify: Ignore pointer casts when constant folding compares between pointers.
...
llvm-svn: 150690
2012-02-16 13:49:39 +00:00
Bill Wendling
89cc16637d
s/ModAttrBehavior/ModFlagBehavior/g to be consistent with how module flags are named elsewhere.
...
llvm-svn: 150679
2012-02-16 10:28:10 +00:00
Bill Wendling
08f02afd84
Add 'exception handling' to my description.
...
llvm-svn: 150678
2012-02-16 10:25:07 +00:00
Bill Wendling
0891de0332
Add blurb about module flags and reformat a bit.
...
llvm-svn: 150677
2012-02-16 10:23:43 +00:00
James Molloy
920ae8c642
Remove extraneous #include and spelling mistake introduced in r150669.
...
llvm-svn: 150670
2012-02-16 09:48:07 +00:00
James Molloy
67b6b11b52
Modify the algorithm when traversing the DAGCombiner's worklist to be O(log N) for all operations. This fixes a horrible worst case with lots of nodes where 99% of the time was being spent in std::remove.
...
llvm-svn: 150669
2012-02-16 09:17:04 +00:00
NAKAMURA Takumi
35d19c0f1c
VMCore/AsmWriter.cpp: Tweak to check #INF and #NAN earlier.
...
With MSVCRT, prior checker missed emission of #INF and #NAN.
FIXME: Checking should be simpler.
llvm-svn: 150667
2012-02-16 08:12:24 +00:00
Eli Bendersky
924f9a671d
Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed.
...
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
2012-02-16 06:28:33 +00:00
Pete Cooper
65911667d9
Template specialize SmallVector::push_back based on POD-ness of the type. Reduces clang binary by 188KB
...
llvm-svn: 150662
2012-02-16 04:58:48 +00:00
NAKAMURA Takumi
aec412337c
VMCore/AsmWriter.cpp: Use APFloat instead of atof(3).
...
atof(3) might behave differently among platforms.
llvm-svn: 150661
2012-02-16 04:19:15 +00:00
Lang Hames
55a2a96153
Oop - r150653 + r150654 broke one of my test cases. Backing out for now...
...
llvm-svn: 150655
2012-02-16 02:32:10 +00:00
Lang Hames
11ca986b17
FPSCR shouldn't be reserved.
...
llvm-svn: 150654
2012-02-16 02:28:14 +00:00
Lang Hames
2055493b97
MachineCSE shouldn't extend the live ranges of reserved or allocatable registers.
...
llvm-svn: 150653
2012-02-16 02:19:35 +00:00
Bill Wendling
7346277b6b
Give a description of the Objective-C garbage collection module flags.
...
The rule governing the flags is this:
no-gc + no-gc = no-gc
no-gc + gc = no-gc
no-gc + gc-only = error
gc + gc = gc
gc + gc-only = gc-only
gc-only + gc-only = gc-only
llvm-svn: 150646
2012-02-16 01:10:50 +00:00
Eli Friedman
c458885c58
loop-rotate shouldn't hoist alloca instructions out of a loop. Patch by Patrik Hägglund, with slightly modified test. Issue reported by Patrik Hägglund on llvmdev.
...
llvm-svn: 150642
2012-02-16 00:41:10 +00:00
Jakob Stoklund Olesen
8a450cb2fa
Enable register mask operands for x86 calls.
...
Call instructions no longer have a list of 43 call-clobbered registers.
Instead, they get a single register mask operand with a bit vector of
call-preserved registers.
This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call
instruction, and it speeds up building call instructions because those
43 imp-def operands no longer need to be added to use-def lists. (And
removed and shifted and re-added for every explicit call operand).
Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and
BranchFolding are significantly faster because they can deal with call
clobbers in bulk.
Overall, clang -O2 is between 0% and 8% faster, uniformly distributed
depending on call density in the compiled code. Debug builds using
clang -O0 are 0% - 3% faster.
I have verified that this patch doesn't change the assembly generated
for the LLVM nightly test suite when building with -disable-copyprop
and -disable-branch-fold.
Branch folding behaves slightly differently in a few cases because call
instructions have different hash values now.
Copy propagation flushes its data structures when it crosses a register
mask operand. This causes it to leave a few dead copies behind, on the
order of 20 instruction across the entire nightly test suite, including
SPEC. Fixing this properly would require the pass to use different data
structures.
llvm-svn: 150638
2012-02-16 00:02:50 +00:00
Bill Wendling
b028143119
Remove extraneous tests.
...
llvm-svn: 150636
2012-02-15 23:44:05 +00:00
Bill Wendling
6a26ab7f99
Add a test for generating Objective-C metadata from module flags.
...
llvm-svn: 150635
2012-02-15 23:43:37 +00:00
Jakob Stoklund Olesen
e9e30d083c
Handle register masks in branch folding.
...
Don't attempt to move instructions with regmask operands. They are most
likely calls anyway.
llvm-svn: 150634
2012-02-15 23:42:54 +00:00
Andrew Trick
20349b88a6
Fix library visibility problems with VLIWPacketizer.
...
The existing framework for postra scheduling is library local. We want to keep it that way. Soon we will have a more general MachineScheduler interface. At that time, various bits will be exposed to targets. In the meantime, the VLIWPacketizer wants to use ScheduleDAGInstrs directly, so it needs to wrapped in a PIMPL to avoid exposing it to the target interface.
llvm-svn: 150633
2012-02-15 23:34:15 +00:00
Bill Wendling
399eae61e9
Use the enum instead of 'unsigned'.
...
llvm-svn: 150632
2012-02-15 23:27:50 +00:00
Lang Hames
923d199a67
Make LiveIntervals::handleMove() bundle aware.
...
llvm-svn: 150630
2012-02-15 23:21:33 +00:00
Bill Wendling
a0009ee85a
Use 'getDataNoRel' for the section kind.
...
llvm-svn: 150628
2012-02-15 22:47:53 +00:00
Lang Hames
f15502f2e5
Fix assertion condition.
...
llvm-svn: 150627
2012-02-15 22:45:51 +00:00
Bill Wendling
0b73456cc5
Add a test for the Objective-C garbage collection metadata stuff.
...
llvm-svn: 150626
2012-02-15 22:44:10 +00:00
Bill Wendling
734909a078
Modify the code that emits the module flags to use the new module flags accessor
...
method. This allows the target lowering code to not have to deal with MDNodes.
Also, avoid leaking memory like a sieve by not creating a global variable for
the image info section, but just emitting the code directly.
llvm-svn: 150624
2012-02-15 22:36:15 +00:00
Bill Wendling
0294932a43
Add a module flags accessor method which returns the flags in a vector.
...
llvm-svn: 150623
2012-02-15 22:34:20 +00:00
Kaelyn Uhrain
7a9ccf4c09
Add function for computing the edit distance of two arrays.
...
Accomplished by moving the body of StringRef::edit_distance into
a separate function that accepts two ArrayRefs, and making
StringRef::edit_distance a wrapper around the new function.
llvm-svn: 150621
2012-02-15 22:13:07 +00:00
Andrew Trick
690a1fb045
Don't expose DefaultVLIWScheduler
...
llvm-svn: 150619
2012-02-15 22:06:21 +00:00
Daniel Dunbar
06b6812b5f
utils: Kill NewNightlyTest.pl, which has been replaced by LNT (as far as I know).
...
llvm-svn: 150610
2012-02-15 19:24:11 +00:00
Lang Hames
1b34a72f52
Remove overly conservative assert.
...
llvm-svn: 150608
2012-02-15 19:04:53 +00:00
Andrew Trick
7a35faea5d
Generic "VLIW" packetizer based on a DFA generated from target itinerary.
...
Patch by Sundeep!
llvm-svn: 150607
2012-02-15 18:55:14 +00:00
Sirish Pande
30804c24ca
Optimize redundant sign extends and negation of predicates.
...
llvm-svn: 150606
2012-02-15 18:52:27 +00:00
Eric Christopher
53da633f93
Revert "Replacing HexagonOptimizeSZExtends with HexagonPeephole."
...
This reverts commit 1656806a944bbd23e98c6e578810fe02495ab741.
llvm-svn: 150605
2012-02-15 18:34:25 +00:00
Eric Christopher
d9811eb7be
Revert "Optimize redundant sign extends and negation of predicates"
...
as it's breaking the build.
This reverts commit 11241abca5e2a313412fed594bb9d9fa2a2057fb.
llvm-svn: 150604
2012-02-15 18:32:25 +00:00
Sirish Pande
99571325f1
Replacing HexagonOptimizeSZExtends with HexagonPeephole.
...
llvm-svn: 150603
2012-02-15 18:31:35 +00:00
Sirish Pande
4736aee81e
Optimize redundant sign extends and negation of predicates
...
llvm-svn: 150601
2012-02-15 18:22:18 +00:00
Chad Rosier
0bc5132457
Add braces to if clause to make symmetric with associate else clause.
...
llvm-svn: 150591
2012-02-15 17:36:21 +00:00
David Meyer
44ec69efe0
For ELF, also call fixSymbolsInTLSFixups() on expressions passed to EmitValue (literal values). Previously only called on expressions in instructions. New test cases added to tls.s, tls-i386.s. Resolves PR11981.
...
llvm-svn: 150582
2012-02-15 15:09:06 +00:00
Bill Wendling
dfb45f4d68
Strip the pointer casts from the constants here.
...
The c'tor list is stored as a list of 'void ()*'s, so all of the functions are
bitcast to that. However, the dyn_cast doesn't automagically look through
bitcasts. Do that for it.
<rdar://problem/10813350>
llvm-svn: 150572
2012-02-15 09:14:08 +00:00
Eric Christopher
24e51b7f29
Add a way to replace a field inside a metadata node. This can be
...
used to incrementally update a created node without needing a
temporary node and RAUW.
llvm-svn: 150571
2012-02-15 09:09:29 +00:00
Andrew Trick
899f46c113
Revert r150565 again. Appears to be a stage2 failure with dragonegg.
...
I'll put MachineLICM back before PEI. All my arm/x86 benchmarks look good, but buildbots don't like it.
llvm-svn: 150568
2012-02-15 07:57:03 +00:00
Andrew Trick
56d412a147
Reapply r150565 with the typo fix properly merged.
...
llvm-svn: 150567
2012-02-15 05:43:27 +00:00
Andrew Trick
dd5beb78a7
reverting r150565. Premature push.
...
llvm-svn: 150566
2012-02-15 05:22:12 +00:00
Andrew Trick
d83284c196
Move PostRAMachineLICM into MachineLateOptimization. It now runs after PEI!
...
llvm-svn: 150565
2012-02-15 05:13:47 +00:00
Lang Hames
1b384668e3
Add a check to make sure we don't assign slot indexes for instructions inside bundles.
...
llvm-svn: 150564
2012-02-15 04:33:48 +00:00
Andrew Trick
e9a951c00b
Allow CodeGen (llc) command line options to work as expected.
...
The llc command line options for enabling/disabling passes are local to CodeGen/Passes.cpp. This patch associates those options with standard pass IDs so they work regardless of how the target configures the passes.
A target has two ways of overriding standard passes:
1) Redefine the pass pipeline (override TargetPassConfig::add%Stage)
2) Replace or suppress individiual passes with TargetPassConfig::substitutePass.
In both cases, the command line options associated with the pass override the target default.
For example, say a target wants to disable machine instruction scheduling by default:
- The target calls disablePass(MachineSchedulerID) but otherwise does not override any TargetPassConfig methods.
- Without any llc options, no scheduler is run.
- With -enable-misched, the standard machine scheduler is run and honors the -misched=... flag to select the scheduler variant, which may be used for performance evaluation or testing.
Sorry overridePass is ugly. I haven't thought of a better way without replacing the cl::opt framework. I hope to do that one day...
I haven't figured out why CodeGen uses char& for pass IDs. AnalysisID is much easier to use and less bug prone. I'm using it wherever I can for internal implementation. Maybe later we can change the global pass ID definitions as well.
llvm-svn: 150563
2012-02-15 03:21:51 +00:00
Andrew Trick
c9ce9d2315
Added TargetPassConfig::disablePass/substitutePass as a general mechanism to override specific passes.
...
llvm-svn: 150562
2012-02-15 03:21:47 +00:00
Andrew Trick
031b38b8b2
comment
...
llvm-svn: 150561
2012-02-15 03:21:43 +00:00
Lang Hames
84f454ec5c
Don't emit live ranges for physregs live-ins that are dead.
...
llvm-svn: 150553
2012-02-15 01:31:10 +00:00
Lang Hames
77d205152a
Disentangle moving a machine instr from updating LiveIntervals.
...
llvm-svn: 150552
2012-02-15 01:23:52 +00:00
Pete Cooper
4dd0963d56
Added hook to let targets custom lower splitting of illegal vectors
...
llvm-svn: 150550
2012-02-15 00:55:31 +00:00
Chad Rosier
f0687634c3
Use a temporary variable, rather then a series of redundant calls.
...
llvm-svn: 150538
2012-02-15 00:36:26 +00:00
Pete Cooper
c21ebf5c41
Stop custom lowering forr x86 DEC64m from happening if the load in the lowered sequence has more than 1 user
...
llvm-svn: 150537
2012-02-15 00:33:37 +00:00
Chad Rosier
dccc4794e6
Use a temporary variable, rather then a series of redundant calls.
...
llvm-svn: 150536
2012-02-15 00:23:55 +00:00
Jakob Stoklund Olesen
c4cf13f791
Fix global live range splitting regmask accuracy.
...
Pretend that regmask interference ends at the 'dead' slot, even when
there is other interference ending at the 'reg' slot of the same
instruction.
llvm-svn: 150531
2012-02-14 23:53:23 +00:00
Jakob Stoklund Olesen
b0c0d340f8
Fix details in local live range splitting with regmasks.
...
Perform all comparisons at instruction granularity, and make sure
register masks on uses count in both gaps.
llvm-svn: 150530
2012-02-14 23:51:27 +00:00
Jakob Stoklund Olesen
e7d3f441b5
Handle regmasks in findRegisterDefOperandIdx().
...
Only accept register masks when looking for an 'overlapping' def. When
Overlap is not set, the function searches for a proper definition of
Reg.
This means MI->modifiesRegister() considers register masks, but
MI->definesRegister() doesn't.
llvm-svn: 150529
2012-02-14 23:49:37 +00:00
Jakob Stoklund Olesen
fab5201e22
Use the proper clobber check in handleLiveInRegister().
...
When a physreg is live in to a basic block, look for any instruction in
the block that clobbers the physreg.
The instruction doesn't have to properly redefine the register, any
overlapping clobber is OK.
This slightly changes live ranges when compiling with register masks.
llvm-svn: 150528
2012-02-14 23:46:24 +00:00
Jakob Stoklund Olesen
20d25a7f40
Dump live intervals in numerical order.
...
The old DenseMap hashed order was very confusing.
llvm-svn: 150527
2012-02-14 23:46:21 +00:00
Lang Hames
e64294ef84
Don't create a new copy of reserved regs - we already have one handy.
...
llvm-svn: 150525
2012-02-14 23:06:12 +00:00
Chad Rosier
5b9c3974d2
Remove unnecessary assignment to temporary, ResultReg.
...
llvm-svn: 150520
2012-02-14 22:29:48 +00:00
Dmitri Gribenko
33e5adea86
Silence the new -Wempty-body warning. It appeared because the next statement
...
after the `for(...) ;' has more indentation than for itself.
llvm-svn: 150516
2012-02-14 22:17:14 +00:00
Aaron Ballman
78f815d3a4
Using the new external-linkage warning recently added instead of disabling all return type warnings.
...
llvm-svn: 150512
2012-02-14 21:44:03 +00:00
Aaron Ballman
b960a51079
Fixing warning due to the new "UTD return type in extern 'C'".
...
Patch by Matt Johnson
llvm-svn: 150508
2012-02-14 21:29:32 +00:00
Bill Wendling
06df7725fc
Add code to the target lowering object file module to handle module flags.
...
The MachO back-end needs to emit the garbage collection flags specified in the
module flags. This is a WIP, so the front-end hasn't been modified to emit these
flags just yet. Documentation and front-end switching to occur soon.
llvm-svn: 150507
2012-02-14 21:28:13 +00:00
Lang Hames
1ce837af7e
Update MachineVerifier to check the new physreg live-in rules.
...
llvm-svn: 150496
2012-02-14 19:17:48 +00:00
Lang Hames
595111f221
Tighten physical register invariants: Allocatable physical registers can
...
only be live in to a block if it is the function entry point or a landing pad.
llvm-svn: 150494
2012-02-14 18:51:53 +00:00
Nadav Rotem
29984ba033
Fix PR12000. Some vector operations may use scalar operands with types
...
that are greater than the vector element type. For example BUILD_VECTOR
of type <1 x i1> with a constant i8 operand.
This patch fixes the assertion.
llvm-svn: 150477
2012-02-14 13:06:32 +00:00
Benjamin Kramer
0e3791efd1
Turn push_back loops into append/insert.
...
llvm-svn: 150471
2012-02-14 10:29:27 +00:00