aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorPhilip Reames <listmail@philipreames.com>2020-03-11 10:01:11 -0700
committerPhilip Reames <listmail@philipreames.com>2020-03-11 10:03:24 -0700
commite6716418442bf178774ea2ec1d34d3d6a5e06b88 (patch)
treeb27a4b733008a1397fd0812fa66b41390d709dd2 /clang/lib/Lex/ModuleMap.cpp
parent0396aa4c05a4b97101da14b5e813c8ab3a34e9d0 (diff)
downloadllvm-e6716418442bf178774ea2ec1d34d3d6a5e06b88.zip
llvm-e6716418442bf178774ea2ec1d34d3d6a5e06b88.tar.gz
llvm-e6716418442bf178774ea2ec1d34d3d6a5e06b88.tar.bz2
[GC] Remove buggy untested optimization from statepoint lowering
A downstream test case (see included reduced test) revealed that we have a bug in how we handle duplicate relocations. If we have the same SDValue relocated twice, and that value happens to be a constant (such as null), we only export one of the two llvm::Values. Exporting on a per llvm::Value basis is required to allow lowering of gc.relocates in following basic blocks (e.g. invokes). Without it, we end up with a use of an undefined vreg and bad things happen. Rather than fixing the optimization - which appears to be hard - I propose we simply remove it. There are no tests in tree that change with this code removed. If we find out later that this did matter for something, we can reimplement a variation of this in CodeGenPrepare to catch the easy cases without complicating the lowering code. Thanks to Denis and Serguei who did all the hard work of figuring out what went wrong here. The patch is by far the easy part. :) Differential Revision: https://reviews.llvm.org/D75964
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
0 files changed, 0 insertions, 0 deletions