- Dec 17, 2012
-
-
Nick Kledzik authored
llvm-svn: 170369
-
Michael Ilseman authored
llvm-svn: 170368
-
Michael Ilseman authored
llvm-svn: 170367
-
Argyrios Kyrtzidis authored
Patch from Edwin Vane! llvm-svn: 170366
-
Argyrios Kyrtzidis authored
No functionality change. llvm-svn: 170365
-
Argyrios Kyrtzidis authored
llvm-svn: 170364
-
Argyrios Kyrtzidis authored
llvm-svn: 170363
-
Anna Zaks authored
llvm-svn: 170362
-
Anna Zaks authored
performance heuristic After inlining a function with more than 13 basic blocks 32 times, we are not going to inline it anymore. The idea is that inlining large functions leads to drastic performance implications. Since the function has already been inlined, we know that we've analyzed it in many contexts. The following metrics are used: - Large function is a function with more than 13 basic blocks (we should switch to another metric, like cyclomatic complexity) - We consider that we've inlined a function many times if it's been inlined 32 times. This number is configurable with -analyzer-config max-times-inline-large=xx This heuristic addresses a performance regression introduced with inlining on one benchmark. The analyzer on this benchmark became 60 times slower with inlining turned on. The heuristic allows us to analyze it in 24% of the time. The performance improvements on the other benchmarks I've tested with are much lower - under 10%, which is expected. llvm-svn: 170361
-
Chad Rosier authored
checks are in place. Some minor cleanup as well. llvm-svn: 170360
-
Nick Kledzik authored
llvm-svn: 170355
-
David Chisnall authored
llvm-svn: 170354
-
Chandler Carruth authored
This was a silly oversight, we weren't pruning allocas which were used by variable-length memory intrinsics from the set that could be widened and promoted as integers. Fix that. llvm-svn: 170353
-
Benjamin Kramer authored
This reverts commit r170344. Doesn't even compile. llvm-svn: 170351
-
Tim Northover authored
llvm-svn: 170350
-
Tim Northover authored
llvm-svn: 170349
-
Daniel Malea authored
Patch by Chia-Hung Duan! llvm-svn: 170348
-
Evgeniy Stepanov authored
llvm-svn: 170347
-
Dmitry Vyukov authored
llvm-svn: 170346
-
Richard Osborne authored
llvm-svn: 170345
-
David Chisnall authored
llvm-svn: 170344
-
Tom Stellard authored
They seem to work fine. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170343
-
Tom Stellard authored
Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170342
-
Tom Stellard authored
The Align parameter is a power of two, so 16 results in 64K alignment. Additional to that even 16 byte alignment doesn't make any sense, so just remove it. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170341
-
Kostya Serebryany authored
llvm-svn: 170339
-
Chandler Carruth authored
This also cleans up a bit of the memcpy call rewriting by sinking some irrelevant code further down and making the call-emitting code a bit more concrete. Previously, memcpy of a subvector would actually miscompile (!!!) the copy into a single vector element copy. I have no idea how this ever worked. =/ This is the memcpy half of PR14478 which we probably weren't noticing previously because it didn't actually assert. The rewrite relies on the newly refactored insert- and extractVector functions to do the heavy lifting, and those are the same as used for loads and stores which makes the test coverage a bit more meaningful here. llvm-svn: 170338
-
Daniel Jasper authored
avoided. This required a minor modification of the memoization as now the "CurrentPenalty" depends on whether or not we break before the current token. Therefore, the CurrentPenalty should not be memoized but added after retrieving a value from memory. This should not affect the runtime behavior. llvm-svn: 170337
-
Patrik Hagglund authored
TargetLowering::getRegClassFor). Some isSimple() guards were missing, or getSimpleVT() were hoisted too far, resulting in asserts on valid LLVM assembly input. llvm-svn: 170336
-
Evgeniy Stepanov authored
Check whether a BB is known as reachable before adding it to the worklist. This way BB's with multiple predecessors are added to the list no more than once. llvm-svn: 170335
-
Richard Osborne authored
Previously these were marked with the wrong format. llvm-svn: 170334
-
Chandler Carruth authored
The first half of fixing this bug was actually in r170328, but was entirely coincidental. It did however get me to realize the nature of the bug, and adapt the test case to test more interesting behavior. In turn, that uncovered the rest of the bug which I've fixed here. This should fix two new asserts that showed up in the vectorize nightly tester. llvm-svn: 170333
-
Richard Osborne authored
llvm-svn: 170332
-
Chandler Carruth authored
I noticed this while looking at r170328. We only ever do a vector rewrite when the alloca *is* the vector type, so it's good to not paper over bugs here by doing a convertValue that isn't needed. llvm-svn: 170331
-
Richard Osborne authored
llvm-svn: 170330
-
Kostya Serebryany authored
llvm-svn: 170329
-
Chandler Carruth authored
This will allow its use inside of memcpy rewriting as well. This routine is more complex than extractVector, and some of its uses are not 100% where I want them to be so there is still some work to do here. While this can technically change the output in some cases, it shouldn't be a change that matters -- IE, it can leave some dead code lying around that prior versions did not, etc. Yet another step in the refactorings leading up to the solution to the last component of PR14478. llvm-svn: 170328
-
Richard Osborne authored
Previously these were marked with the wrong format. llvm-svn: 170327
-
Dmitry Vyukov authored
llvm-svn: 170326
-
Chandler Carruth authored
The method helpers all implicitly act upon the alloca, and what we really want is a fully generic helper. Doing memcpy rewrites is more special than all other rewrites because we are at times rewriting instructions which touch pointers *other* than the alloca. As a consequence all of the helpers needed by memcpy rewriting of sub-vector copies will need to be generalized fully. Note that all of these helpers ({insert,extract}{Integer,Vector}) are woefully uncommented. I'm going to go back through and document them once I get the factoring correct. No functionality changed. llvm-svn: 170325
-
Chandler Carruth authored
This makes it suitable for use in rewriting memcpy in the presence of subvector memcpy intrinsics. No functionality changed. llvm-svn: 170324
-