aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/TapiUniversal.cpp
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2020-06-11 15:11:45 -0700
committerThomas Lively <tlively@google.com>2020-06-11 15:11:45 -0700
commitc5d012341e58bf5e4300024a7e4f4e509c08463f (patch)
tree912ebafac868839a1a02815184b3f6830ac9934e /llvm/lib/Object/TapiUniversal.cpp
parent3b43f006294971b8049d4807110032169780e5b8 (diff)
downloadllvm-c5d012341e58bf5e4300024a7e4f4e509c08463f.zip
llvm-c5d012341e58bf5e4300024a7e4f4e509c08463f.tar.gz
llvm-c5d012341e58bf5e4300024a7e4f4e509c08463f.tar.bz2
[WebAssembly] Make BR_TABLE non-duplicable
Summary: After their range checks were removed in 7f50c15be5c0, br_tables started being duplicated into their predecessors by tail folding. Unfortunately, when the br_tables were in loops this transformation introduced bad irreducible control flow which was later expanded into even more br_tables. This commit abuses the `isNotDuplicable` property to prevent this irreducible control flow from being introduced. This change saves a few dozen bytes of code size and has a negligible affect on performance for most of the large Emscripten benchmarks, but can improve performance significantly on microbenchmarks of switches in loops. Reviewers: aheejin, dschuff Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81628
Diffstat (limited to 'llvm/lib/Object/TapiUniversal.cpp')
0 files changed, 0 insertions, 0 deletions