Eric Christopher
c81a7702c2
Testcase for previous commit.
...
rdar://10493979
llvm-svn: 151098
2012-02-21 22:25:56 +00:00
Eric Christopher
8575790912
There's no need for a DW_AT_byte_size on a pointer type.
...
Part of rdar://10493979 where it reduces by about .5% (10k)
llvm-svn: 151097
2012-02-21 22:25:53 +00:00
Nick Lewycky
9d0da18597
Use the target-aware constant folder on expressions to improve the chance
...
they'll be simple enough to simulate, and to reduce the chance we'll encounter
equal but different simple pointer constants.
This removes the symptoms from PR11352 but is not a full fix. A proper fix would
either require a guarantee that two constant objects we simulate are folded
when equal, or a different way of handling equal pointers (ie., trying a
constantexpr icmp on them to see whether we know they're equal or non-equal or
unsure).
llvm-svn: 151093
2012-02-21 22:08:06 +00:00
Evan Cheng
0460ae8d80
Proper support for a bastardized darwin-eabi hybird ABI.
...
llvm-svn: 151083
2012-02-21 20:46:00 +00:00
Rafael Espindola
b41b407f3d
s/the the/the/
...
llvm-svn: 151079
2012-02-21 19:27:16 +00:00
Benjamin Kramer
c7a22fe76b
Fix unsigned off-by-one in comment.
...
llvm-svn: 151056
2012-02-21 13:40:06 +00:00
Benjamin Kramer
6ee8690aa5
InstCombine: Don't transform a signed icmp of two GEPs into a signed compare of the indices.
...
This transformation is not safe in some pathological cases (signed icmp of pointers should be an
extremely rare thing, but it's valid IR!). Add an explanatory comment.
Kudos to Duncan for pointing out this edge case (and not giving up explaining it until I finally got it).
llvm-svn: 151055
2012-02-21 13:31:09 +00:00
Duncan Sands
8570b29dfe
Move the implementation of StringRef::split out of StringExtras.cpp
...
and into StringRef.cpp, which is where the other StringRef stuff is.
llvm-svn: 151054
2012-02-21 12:00:25 +00:00
NAKAMURA Takumi
c664fdbd4a
test/CodeGen/X86/2012-02-20-MachineCPBug.ll: Fix on generic(non-x86) hosts to add -mattr=+sse.
...
llvm-svn: 151053
2012-02-21 11:56:42 +00:00
Jay Foad
af3cf11fec
Revert r151049 cos it broke the buildbots.
...
llvm-svn: 151052
2012-02-21 11:44:46 +00:00
Chandler Carruth
362087bcba
Tiny cosmetic change to use the same style for all of the while loops in
...
the normalize routine, especially the empty while loops.
llvm-svn: 151050
2012-02-21 09:29:14 +00:00
Jay Foad
3f99d381b4
PR1210: make uniquing of struct and function types more efficient by
...
using a DenseMap and Talin's new GeneralHash, avoiding the need for a
temporary std::vector on every lookup.
Patch by Meador Inge!
llvm-svn: 151049
2012-02-21 09:25:52 +00:00
Chandler Carruth
6ea6de7cad
Replace a hand rolled loop with a lovely StringRef helper we have these
...
days. No functionality changed.
llvm-svn: 151048
2012-02-21 09:12:48 +00:00
Chandler Carruth
aec9708988
Pull the parsing helper functions out of the Triple interface entirely.
...
They're private static methods but we can just make them static
functions in the implementation. It makes the implementations a touch
more wordy, but takes another chunk out of the header file.
Also, take the opportunity to switch the names to the new coding
conventions.
No functionality changed here.
llvm-svn: 151047
2012-02-21 08:53:32 +00:00
Chandler Carruth
1f3325a6d9
Clean up comments that I missed when changing the triple representation.
...
Somehow, I even missed the ones I wrote just the other day...
Thanks to Matt for the code review.
llvm-svn: 151045
2012-02-21 08:31:18 +00:00
Craig Topper
028a6721c9
Reorder some members in MCRegisterClass to remove padding on 64-bit builds.
...
llvm-svn: 151043
2012-02-21 07:36:39 +00:00
Craig Topper
da991549c0
In generated RegisterInfo files, replace a pointer to the end of an array with just the size of the array to avoid relocations.
...
llvm-svn: 151041
2012-02-21 06:54:41 +00:00
Craig Topper
9a511519e4
Merge some tables in generated RegisterInfo file. Store indices into larger table instead of pointers to reduce relocations and shrink table size on 64-bit builds. Shaves ~24K off X86MCTargetDesc.o. Accidentally commited only part of this in r151038.
...
llvm-svn: 151039
2012-02-21 06:23:21 +00:00
Craig Topper
b5d89e2475
Merge some tables in generated RegisterInfo file. Store indices into larger table instead of pointers to reduce relocations and shrink table size on 64-bit builds. Shaves ~24K off X86MCTargetDesc.o
...
llvm-svn: 151038
2012-02-21 06:22:36 +00:00
Andrew Trick
da84e64683
Clear virtual registers after they are no longer referenced.
...
Passes after RegAlloc should be able to rely on MRI->getNumVirtRegs() == 0.
This makes sharing code for pre/postRA passes more robust.
Now, to check if a pass is running before the RA pipeline begins, use MRI->isSSA().
To check if a pass is running after the RA pipeline ends, use !MRI->getNumVirtRegs().
PEI resets virtual regs when it's done scavenging.
PTX will either have to provide its own PEI pass or assign physregs.
llvm-svn: 151032
2012-02-21 04:51:23 +00:00
Andrew Trick
5c714e7985
StackSlotColoring does not use a VirtRegMap
...
llvm-svn: 151031
2012-02-21 04:51:19 +00:00
Andrew Trick
a6807a6557
whitespace
...
llvm-svn: 151030
2012-02-21 04:51:17 +00:00
Rafael Espindola
729e3aae92
Use more idiomatic assert.
...
llvm-svn: 151026
2012-02-21 03:51:14 +00:00
Rafael Espindola
b2defca267
Avoid warning on non assert builds.
...
llvm-svn: 151025
2012-02-21 03:48:30 +00:00
Chandler Carruth
2d27b0f0ed
Switch the llvm::Triple class to immediately parse the triple string on
...
construction. Simplify its interface, implementation, and users
accordingly as there is no longer an 'uninitialized' state to check for.
Also, fixes a bug lurking in the interface as there was one method that
didn't correctly check for initialization.
llvm-svn: 151024
2012-02-21 03:39:36 +00:00
Rafael Espindola
7d445e92c3
It turns out that with the current scev organization ReuseOrCreateCast cannot
...
know where users will be added. Because of this, it cannot use
Builder.GetInsertPoint at all.
This patch
* removes the FIXME about adding the assert.
* adds a comment explaining hy we don't have one.
* removes a broken logic that only works for some callers and is not needed
since r150884.
* adds an assert to caller that would have caught the bug fixed by r150884.
llvm-svn: 151015
2012-02-21 01:19:51 +00:00
Lang Hames
7e2ce889a0
Fix some bugs in HMEditor's moveAllOperandsInto logic.
...
llvm-svn: 151006
2012-02-21 00:00:36 +00:00
Nick Lewycky
519561f418
Check for the correct size in the invariant marker.
...
llvm-svn: 151003
2012-02-20 23:32:26 +00:00
Evan Cheng
63618f9ba6
Fix machine-cp by having it to check sub-register indicies. e.g.
...
ecx = mov eax
al = mov ch
The second copy is not a nop because the sub-indices of ecx,ch is not the
same of that of eax/al.
Re-enabled machine-cp.
PR11940
llvm-svn: 151002
2012-02-20 23:28:17 +00:00
Chad Rosier
47eeddde24
Fix 80-column violation.
...
llvm-svn: 150998
2012-02-20 23:13:17 +00:00
Benjamin Kramer
a00c5c451a
Test case for r150978.
...
llvm-svn: 150979
2012-02-20 19:00:28 +00:00
Benjamin Kramer
ac8ecc4e7e
InstCombine: Removing the base from the address calculation is only safe when the GEPs are inbounds.
...
llvm-svn: 150978
2012-02-20 18:45:10 +00:00
Eric Christopher
4826c8fbe8
Make this a bit prettier and more obvious when a derived type isn't
...
derived from anything.
llvm-svn: 150975
2012-02-20 18:04:39 +00:00
Eric Christopher
300871076e
If a derived type is also a composite type, print that information
...
too.
llvm-svn: 150974
2012-02-20 18:04:35 +00:00
Eric Christopher
8979712685
Add support for runtime languages on our forward declarations.
...
llvm-svn: 150973
2012-02-20 18:04:14 +00:00
Benjamin Kramer
7adb189538
InstCombine: When comparing two GEPs that were derived from the same base pointer but use different types, expand the offset calculation and to the compare on the offset if profitable.
...
This came up in SmallVector code.
llvm-svn: 150962
2012-02-20 15:07:47 +00:00
Benjamin Kramer
7746eb62fb
InstCombine: Make OptimizePointerDifference more aggressive.
...
- Ignore pointer casts.
- Also expand GEPs that aren't constantexprs when they have one use or only constant indices.
- We now compile "&foo[i] - &foo[j]" into "i - j".
llvm-svn: 150961
2012-02-20 14:34:57 +00:00
James Molloy
862fe49c55
Teach the DAGCombiner that certain loadext nodes followed by ANDs can be converted to zeroexts.
...
llvm-svn: 150957
2012-02-20 12:02:38 +00:00
James Molloy
547d4c0662
Improve generated code for extending loads and some trunc stores on ARM.
...
Teach TargetSelectionDAG about lengthening loads for vector types and set v4i8 as legal. Allow FP_TO_UINT for v4i16 from v4i32.
llvm-svn: 150956
2012-02-20 09:24:05 +00:00
Evan Cheng
d0c02966d2
Make post-ra tail duplication bundle safe. No test case as recent codegen
...
flow changes have already hidden the bug. rdar://10893812
llvm-svn: 150949
2012-02-20 07:51:58 +00:00
Nick Lewycky
60829a587a
Rename class Evaluate to Evaluator and put it in an anonymous namespace.
...
llvm-svn: 150947
2012-02-20 03:25:59 +00:00
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