Go to file
Hiroshi Yamauchi 1b179bc5ff [LVI] Constant-propagate a zero extension of the switch condition value through case edges
Summary:
LazyValueInfo currently computes the constant value of the switch condition through case edges, which allows the constant value to be propagated through the case edges.

But we have seen a case where a zero-extended value of the switch condition is used past case edges for which the constant propagation doesn't occur.

This patch adds a small logic to handle such a case in getEdgeValueLocal().

This is motivated by the Python 2.7 eval loop in PyEval_EvalFrameEx() where the lack of the constant propagation causes longer live ranges and more spill code than necessary.

With this patch, we see that the code size of PyEval_EvalFrameEx() decreases by ~5.4% and a performance test improves by ~4.6%.




Reviewers: wmi, dberlin, sanjoy

Reviewed By: sanjoy

Subscribers: davide, davidxl, llvm-commits

Differential Revision: https://reviews.llvm.org/D34822

llvm-svn: 309415
2017-07-28 18:35:25 +00:00
clang [CMake] Add Android toolchain CMake cache files. 2017-07-28 17:40:28 +00:00
clang-tools-extra [clang-tidy] Expand readability-redundant-function-ptr-dereference test 2017-07-28 12:46:08 +00:00
compiler-rt [sanitizers test CMake] further refactor testing CMake for tsan 2017-07-28 17:38:44 +00:00
debuginfo-tests Add a test for PR33166. 2017-05-25 19:33:16 +00:00
libclc add __kernel_exec macros 2017-07-28 03:39:03 +00:00
libcxx [libcxx] [test] Remove an unused local typedef in enable_shared_from_this.pass.cpp. 2017-07-27 21:16:37 +00:00
libcxxabi [demangler] Fix some overzealous -Wreturn-type errors 2017-07-28 01:35:14 +00:00
libunwind Partial fix for PR33858 2017-07-26 18:13:57 +00:00
lld Fix the order of section that are not on an order file. 2017-07-28 15:36:15 +00:00
lldb [CMake] libcompression is optional not required for debugserver 2017-07-28 15:44:16 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [LVI] Constant-propagate a zero extension of the switch condition value through case edges 2017-07-28 18:35:25 +00:00
openmp Fix implementation of OMP_THREAD_LIMIT 2017-07-27 20:58:41 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [test] Fix typo in filename. NFC. 2017-07-28 16:57:56 +00:00