aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/CommandLineTest.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2021-06-22 18:53:12 -0700
committerArthur Eubanks <aeubanks@google.com>2021-06-24 13:28:09 -0700
commit7110510ecacf9eecc56d452e9ed3bf47fdee16a5 (patch)
treec42a5d9272994bf98be8f979489ae3b451d9192d /llvm/unittests/Support/CommandLineTest.cpp
parenta08fa8a508199c6463f5ee5d617e2f360f718067 (diff)
downloadllvm-7110510ecacf9eecc56d452e9ed3bf47fdee16a5.zip
llvm-7110510ecacf9eecc56d452e9ed3bf47fdee16a5.tar.gz
llvm-7110510ecacf9eecc56d452e9ed3bf47fdee16a5.tar.bz2
[WPD] Don't optimize calls more than once
WPD currently assumes that there is a one to one correspondence between type test assume sequences and virtual calls. However, with -fstrict-vtable-pointers this may not be true. This ends up causing crashes when we try to optimize a virtual call more than once ( applyUniformRetValOpt()/applyUniqueRetValOpt()/applyVirtualConstProp()/applySingleImplDevirt()). applySingleImplDevirt() actually didn't previous crash because it would replace the devirtualized call with the same direct call. Adding an assert that the call is indirect causes the corresponding test to crash with the rest of the patch. This makes Chrome successfully build with -fstrict-vtable-pointers + WPD. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D104798
Diffstat (limited to 'llvm/unittests/Support/CommandLineTest.cpp')
0 files changed, 0 insertions, 0 deletions