- Oct 19, 2016
-
-
Dehao Chen authored
llvm-svn: 284544
-
Michael Kruse authored
Update test after commit r284501: [SCEV] Make CompareValueComplexity a little bit smarter Contributed-by:
Sanjoy Das <sanjoy@playingwithpointers.com> llvm-svn: 284543
-
- Oct 18, 2016
-
-
Rong Xu authored
Summary: This pass shrink-wraps a condition to some library calls where the call result is not used. For example: sqrt(val); is transformed to if (val < 0) sqrt(val); Even if the result of library call is not being used, the compiler cannot safely delete the call because the function can set errno on error conditions. Note in many functions, the error condition solely depends on the incoming parameter. In this optimization, we can generate the condition can lead to the errno to shrink-wrap the call. Since the chances of hitting the error condition is low, the runtime call is effectively eliminated. These partially dead calls are usually results of C++ abstraction penalty exposed by inlining. This optimization hits 108 times in 19 C/C++ programs in SPEC2006. Reviewers: hfinkel, mehdi_amini, davidxl Subscribers: modocache, mgorny, mehdi_amini, xur, llvm-commits, beanz Differential Revision: https://reviews.llvm.org/D24414 llvm-svn: 284542
-
Dehao Chen authored
Summary: The original heuristic to break critical edge during machine sink is relatively conservertive: when there is only one instruction sinkable to the critical edge, it is likely that the machine sink pass will not break the critical edge. This leads to many speculative instructions executed at runtime. However, with profile info, we could model the splitting benefits: if the critical edge has 50% taken rate, it would always be beneficial to split the critical edge to avoid the speculated runtime instructions. This patch uses profile to guide critical edge splitting in machine sink pass. The performance impact on speccpu2006 on Intel sandybridge machines: spec/2006/fp/C++/444.namd 25.3 +0.26% spec/2006/fp/C++/447.dealII 45.96 -0.10% spec/2006/fp/C++/450.soplex 41.97 +1.49% spec/2006/fp/C++/453.povray 36.83 -0.96% spec/2006/fp/C/433.milc 23.81 +0.32% spec/2006/fp/C/470.lbm 41.17 +0.34% spec/2006/fp/C/482.sphinx3 48.13 +0.69% spec/2006/int/C++/471.omnetpp 22.45 +3.25% spec/2006/int/C++/473.astar 21.35 -2.06% spec/2006/int/C++/483.xalancbmk 36.02 -2.39% spec/2006/int/C/400.perlbench 33.7 -0.17% spec/2006/int/C/401.bzip2 22.9 +0.52% spec/2006/int/C/403.gcc 32.42 -0.54% spec/2006/int/C/429.mcf 39.59 +0.19% spec/2006/int/C/445.gobmk 26.98 -0.00% spec/2006/int/C/456.hmmer 24.52 -0.18% spec/2006/int/C/458.sjeng 28.26 +0.02% spec/2006/int/C/462.libquantum 55.44 +3.74% spec/2006/int/C/464.h264ref 46.67 -0.39% geometric mean +0.20% Manually checked 473 and 471 to verify the diff is in the noise range. Reviewers: rengolin, davidxl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D24818 llvm-svn: 284541
-
David Blaikie authored
llvm-svn: 284540
-
David Blaikie authored
(accidentally removed this from my previous change when I was rejecting some clang-format formatting... ) llvm-svn: 284539
-
Dehao Chen authored
llvm-svn: 284538
-
David Blaikie authored
dwarfdump: -summarize-types: print a short summary (unqualified type name, hash, length) of type units rather than dumping contents This is just a quick utility handy for getting rough summaries of types in a given object or dwo file. I've been using it to investigate the amount of type info redundancy across a project build, for example. llvm-svn: 284537
-
Eli Friedman authored
The custom lowering is pretty straightforward: basically, just AND together the two halves of a <4 x i32> compare. Differential Revision: https://reviews.llvm.org/D25713 llvm-svn: 284536
-
Davide Italiano authored
This is in line with other places of GVN (e.g. load coercion logic). llvm-svn: 284535
-
Davide Italiano authored
llvm-svn: 284534
-
Dehao Chen authored
Summary: The original implementation is in r261607, which was reverted in r269726 to accomendate the ProfileSummaryInfo analysis pass. The new implementation: 1. add a new metadata for function section prefix 2. query against ProfileSummaryInfo in CGP to set the correct section prefix for each function 3. output the section prefix set by CGP Reviewers: davidxl, eraman Subscribers: vsk, llvm-commits Differential Revision: https://reviews.llvm.org/D24989 llvm-svn: 284533
-
Evandro Menezes authored
llvm-svn: 284532
-
Evandro Menezes authored
Transform `a == 0.0 ? 0.0 : x` to `a == 0.0 ? a : x` and `a != 0.0 ? x : 0.0` to `a != 0.0 ? x : a` to avoid materializing 0.0 for FCSEL, since it does not have to be materialized beforehand for FCMP, as it has a form that has 0.0 as an implicit operand. Differential Revision: https://reviews.llvm.org/D24808 llvm-svn: 284531
-
Richard Smith authored
llvm-svn: 284530
-
Kevin Enderby authored
load command that use the MachO:: linkedit_data_command type but is not used in llvm libObject code but used in llvm tool code. This is for the LC_CODE_SIGNATURE load command. llvm-svn: 284529
-
Richard Smith authored
[c++1z] Fix corner case where we could create a function type whose canonical type is not actually canonical. llvm-svn: 284528
-
Tim Northover authored
llvm-svn: 284527
-
Tim Northover authored
AArch64 actually supports many 8-bit operations under the definition used by GlobalISel: the designated information-carrying bits of a GPR32 get the right value if you just use the normal 32-bit instruction. llvm-svn: 284526
-
Tim Northover authored
llvm-svn: 284525
-
Mandeep Singh Grang authored
Summary: Unused: typedef SmallSetVector<RegionT *, 4> RegionSet Reviewers: MatzeB, grosser Subscribers: zinob Differential Revision: https://reviews.llvm.org/D25744 llvm-svn: 284524
-
Tim Northover authored
Patch from Ahmed Bougacha. llvm-svn: 284523
-
Krzysztof Parzyszek authored
llvm-svn: 284522
-
Benjamin Kramer authored
llvm-svn: 284521
-
Benjamin Kramer authored
It's not thread safe and completely unnecessary. llvm-svn: 284520
-
Richard Smith authored
When two function types have equivalent (but distinct) noexcept specifications, create separate type sugar nodes. This is necessary so that substitution into the exception specification will substitute into the correct expression. llvm-svn: 284519
-
Simon Pilgrim authored
This doesn't cover all combines in DAGCombiner::visitSRL/visitSHL yet, but identifies several cases where we fail to combine vectors (or non-splatted) vectors llvm-svn: 284518
-
Mandeep Singh Grang authored
Summary: Add REQUIRES for target specific tests. Patch by Azharuddin Mohammed. Reviewers: apazos, weimingz, rsmith, ddunbar, spop, mgrang Subscribers: sebpop, llvm-commits Differential Revision: https://reviews.llvm.org/D25574 llvm-svn: 284517
-
Akira Hatanaka authored
constexpr variable. When compiling a constexpr NSString initialized with an objective-c string literal, CodeGen emits objc_storeStrong on an uninitialized alloca, which causes a crash. This patch folds the code in EmitScalarInit into EmitStoreThroughLValue and fixes the crash by calling objc_retain on the string instead of using objc_storeStrong. rdar://problem/28562009 Differential Revision: https://reviews.llvm.org/D25547 llvm-svn: 284516
-
Benjamin Kramer authored
This is a threading hazard and rightfully complained about by tsan. No functionality change. llvm-svn: 284515
-
Kostya Serebryany authored
[libFuzzer] detect leaks after every run when executing fixed inputs (./fuzzer -runs=1000000 my-file) llvm-svn: 284514
-
Sanjay Patel authored
There's something wrong with the StringRef usage while parsing the attribute string. llvm-svn: 284513
-
Kuba Brecka authored
We currently only pass -std=c++11 when we have an instrumented libcxx. Differential Revision: https://reviews.llvm.org/D25740 llvm-svn: 284512
-
Vedant Kumar authored
Pointed out by Malcolm Parsons. llvm-svn: 284510
-
Kostya Serebryany authored
llvm-svn: 284509
-
Kostya Serebryany authored
llvm-svn: 284508
-
Vitaly Buka authored
Reviewers: eugenis Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D25737 llvm-svn: 284507
-
Vitaly Buka authored
Reviewers: eugenis Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D25736 llvm-svn: 284506
-
Vitaly Buka authored
Reviewers: eugenis Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D25735 llvm-svn: 284505
-
Kevin Enderby authored
load commands that use the MachO::routines_command and and MachO::routines_command_64 types but are not used in llvm libObject code but used in llvm tool code. This includes the LC_ROUTINES and LC_ROUTINES_64 load commands. llvm-svn: 284504
-