| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This was regression from r134829. When linking we have to be conservative. If
one of the symbols has a significant address, then the result should have it
too.
llvm-svn: 189935
|
|
|
|
|
|
|
|
|
|
| |
"(icmp op i8 A, B)" is equivalent to "(icmp op i8 (A & 0xff), B)" as a
degenerate case. Allowing this as a "masked" comparison when analysing "(icmp)
&/| (icmp)" allows us to combine them in more cases.
rdar://problem/7625728
llvm-svn: 189931
|
|
|
|
|
|
|
|
|
|
|
| |
Even in cases which aren't universally optimisable like "(A & B) != 0 && (A &
C) != 0", the masks can make one of the comparisons completely redundant. In
this case, since we've gone to the effort of spotting masked comparisons we
should combine them.
rdar://problem/7625728
llvm-svn: 189930
|
|
|
|
|
|
|
|
|
|
| |
instructions:
sshr,ushr,ssra,usra,srshr,urshr,srsra,ursra,sri,shl,sli,sqshlu,sqshl,uqshl,shrn,sqrshrun,sqshrn,uqshr,sqrshrn,uqrshrn,sshll,ushll
and 4 convert instructions:
scvtf,ucvtf,fcvtzs,fcvtzu
llvm-svn: 189925
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dead and the rest of the compatibility should be done on a dwarf-N level.""
This reverts commit r189913.
Talked with Eric on IRC. I am going to XFAIL the failing test since it
is using what Eric described as "the member hack" which was needed on
that old GDB.
Sorry for the noise!
llvm-svn: 189914
|
|
|
|
|
|
|
|
|
|
|
|
| |
the rest of the compatibility should be done on a dwarf-N level."
This reverts commit r189903.
This commit broke the phase 1 buildbot for a while.
http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/6684
llvm-svn: 189913
|
|
|
|
| |
llvm-svn: 189912
|
|
|
|
|
|
|
|
|
|
| |
Iterator of std::vector may be implemented as a raw pointer. In
this case begin iterators are rvalues and cannot be incremented.
For example, this is the case with STDCXX implementation of vector.
Patch by Konstantin Tokarev <annulen@yandex.ru>.
llvm-svn: 189911
|
|
|
|
|
|
| |
the rest of the compatibility should be done on a dwarf-N level.
llvm-svn: 189903
|
|
|
|
|
|
| |
in the module. Add a FIXME with a comment about darwin's ld.
llvm-svn: 189902
|
|
|
|
|
|
|
|
|
|
| |
Original message:
If a constant or a function has linkonce_odr linkage and unnamed_addr, mark
hidden. Being linkonce_odr guarantees that it is available in every dso that
needs it. Being a constant/function with unnamed_addr guarantees that the
copies don't have to be merged.
llvm-svn: 189886
|
|
|
|
|
|
|
|
|
| |
Previously, the clang crash handling code would kick in and give a crash
report for these, even though they're not that sort of error.
rdar://14882264
llvm-svn: 189878
|
|
|
|
| |
llvm-svn: 189870
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The reason that I am turning off this optimization is that there is an
additional case where a block can escape that has come up. Specifically, this
occurs when a block is used in a scope outside of its current scope.
This can cause a captured retainable object pointer whose life is preserved by
the objc_retainBlock to be deallocated before the block is invoked.
An example of the code needed to trigger the bug is:
----
\#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
void (^somethingToDoLater)();
{
NSObject *obj = [NSObject new];
somethingToDoLater = ^{
[obj self]; // Crashes here
};
}
NSLog(@"test.");
somethingToDoLater();
return 0;
}
----
In the next commit, I remove all the dead code that results from this.
Once I put in the fixing commit I will bring back the tests that I deleted in
this commit.
rdar://14802782.
rdar://14868830.
llvm-svn: 189869
|
|
|
|
|
|
| |
hashing the contents of DW_FORM_data1 on top of a type with attributes.
llvm-svn: 189862
|
|
|
|
| |
llvm-svn: 189861
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes the default setting for the LateVectorization flag that controls where the loop-vectorizer is ran.
Perf gains:
SingleSource/Benchmarks/Shootout/matrix -37.33%
MultiSource/Benchmarks/PAQ8p/paq8p -22.83%
SingleSource/Benchmarks/Linpack/linpack-pc -16.22%
SingleSource/Benchmarks/Shootout-C++/ary3 -15.16%
MultiSource/Benchmarks/TSVC/NodeSplitting-flt/NodeSplitting-flt -10.34%
MultiSource/Benchmarks/TSVC/NodeSplitting-dbl/NodeSplitting-dbl -7.12%
Regressions:
SingleSource/Benchmarks/Misc/lowercase 15.10%
MultiSource/Benchmarks/TSVC/Equivalencing-flt/Equivalencing-flt 13.18%
SingleSource/Benchmarks/Shootout-C++/matrix 8.27%
SingleSource/Benchmarks/CoyoteBench/lpbench 7.30%
llvm-svn: 189858
|
|
|
|
|
|
|
|
| |
This is another one that doesn't matter much,
but uses the right GEP index types in the first
place.
llvm-svn: 189854
|
|
|
|
|
|
|
| |
This doesn't actually matter, since alloca is always
0 address space, but this is more consistent.
llvm-svn: 189853
|
|
|
|
|
|
| |
method. No functionality change.
llvm-svn: 189849
|
|
|
|
|
|
|
|
|
| |
This reverts commit r189648.
Fixes for the previously failing clang-side arm_neon_intrinsics test
cases will be checked in separately.
llvm-svn: 189841
|
|
|
|
|
|
|
|
| |
This won't affect the kinds of hashes we test for as we actually
do hashing based on form and attribute. Change the fission-hash
testcase one last time to handle DW_AT_comp_dir.
llvm-svn: 189840
|
|
|
|
|
|
|
|
|
| |
1) If the width of vectorization list candidate is bigger than vector reg width, we will break it down to fit the vector reg.
2) We do not vectorize the width which is not power of two.
The performance result shows it will help some spec benchmarks. mesa improved 6.97% and ammp improved 1.54%.
llvm-svn: 189830
|
|
|
|
|
|
|
|
|
| |
For now this just handles simple comparisons of an ANDed value with zero.
The CC value provides enough information to do any comparison for a
2-bit mask, and some nonzero comparisons with more populated masks,
but that's all future work.
llvm-svn: 189819
|
|
|
|
| |
llvm-svn: 189796
|
|
|
|
|
|
|
| |
Select condition shadow was being ignored resulting in false negatives.
This change OR-s sign-extended condition shadow into the result shadow.
llvm-svn: 189785
|
|
|
|
| |
llvm-svn: 189780
|
|
|
|
| |
llvm-svn: 189779
|
|
|
|
| |
llvm-svn: 189768
|
|
|
|
|
|
|
|
| |
Test cases adjusted accordingly.
This fixes rdar://14871821.
llvm-svn: 189766
|
|
|
|
|
|
| |
What we really want is to enable Swift by default for *v7s triples (and there already seems to be some logic which attempts to do that). In that case the iOS version doesn't matter.
llvm-svn: 189763
|
|
|
|
|
|
|
|
| |
Test cases adjusted accordingly.
This fixes rdar://14871821.
llvm-svn: 189756
|
|
|
|
|
|
| |
Fixes PR17028.
llvm-svn: 189742
|
|
|
|
| |
llvm-svn: 189740
|
|
|
|
|
|
| |
Specify GATHER/SCATTER as heavy instructions.
llvm-svn: 189736
|
|
|
|
|
|
|
|
|
| |
This patch implements vector support for select instruction and adds specific vector instructions : shuffle and insertelement. (tests are also included)
and functions lle_X_memset, lle_X_memcpy added.
Done by Veselov, Yuri (mailto:Yuri.Veselov@intel.com)
llvm-svn: 189735
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
printing routine. This is made harder to see due to the surprising
formatting, inconsistent brace usage, and repeated conditions that all
test the same thing.
The only "consequence" of this bug is re-assigning 'str' to an empty
string when computing the error string for an error number of 0 in the
event of a non-GNU strerror_r routine. So, nothing to see here other
than cleanup. It did help me find PR17055 in clang-format though.
llvm-svn: 189734
|
|
|
|
| |
llvm-svn: 189729
|
|
|
|
| |
llvm-svn: 189728
|
|
|
|
|
|
|
|
|
| |
don't exist in libc. This is really not the right way to solve this problem;
but it's not clear to me at this time exactly what is the right way.
If we create stubs here, they will cause link errors because these functions
do not exist in libc.
llvm-svn: 189727
|
|
|
|
| |
llvm-svn: 189726
|
|
|
|
|
|
|
|
|
|
| |
available.
The existing code missed some edge cases when e.g. we're going to emit sqrtf but
only the availability of sqrt was checked. This happens on odd platforms like
windows.
llvm-svn: 189724
|
|
|
|
|
|
|
|
| |
There was one case that we could hit a DebugValue where I didn't think
to check. DebugValues are evil. No checkinable test case, sorry. It's
an obvious fix.
llvm-svn: 189717
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Here are a few miscellaneous things to tidy up the PPC64 fast-isel
implementation. I corrected a couple of commentary lapses, and added
documentation of future opportunities. I also implemented
TargetMaterializeAlloca, which I somehow forgot when I split up the
original huge patch.
Finally, I decided to delete SelectCmp. I hadn't previously hooked it
in to TargetSelectInstruction(), and when I did I realized it wasn't
serving any useful purpose. This is only useful for compares that
don't feed a branch in the same block, and to handle that we would
have to have logic to interpret i1 as a condition register. This
could probably be done, but would require Unseemly Hackery, and
honestly does not seem worth the hassle.
This ends the current patch series.
llvm-svn: 189715
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the last substantive patch I'm planning for fast-isel in the
near future, adding fast selection of integer truncates. There are
certainly more things that can be improved (many of which are called
out in FIXMEs), but for now we are catching most of the important
cases.
I'll document some of the remaining work in a cleanup patch shortly.
llvm-svn: 189706
|
|
|
|
| |
llvm-svn: 189705
|
|
|
|
|
|
|
|
|
| |
This patch adds fast-isel support for calls (but not intrinsic calls
or varargs calls). It also removes a badly-formed assert. There are
some new tests just for calls, and also for folding loads into
arguments on calls to avoid extra extends.
llvm-svn: 189701
|
|
|
|
| |
llvm-svn: 189699
|
|
|
|
|
|
| |
LLVM to identify a 1-byte instruction, but then upon querying it for that 1-byte instruction would cause an undefined opcode.
llvm-svn: 189698
|
|
|
|
| |
llvm-svn: 189697
|