aboutsummaryrefslogtreecommitdiff
path: root/polly
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2024-03-11 11:14:40 +0800
committerTom Stellard <tstellar@redhat.com>2024-03-19 14:03:55 -0700
commit0bf7ff1028fb7cc81324e9c38c585e6533b754e4 (patch)
tree4d54a84cc2532bd0ad988d4a16bd63e8eb579920 /polly
parenta2c93b34dfdf6b2e5d16a5068e92f30bbc5d0ba7 (diff)
downloadllvm-0bf7ff1028fb7cc81324e9c38c585e6533b754e4.zip
llvm-0bf7ff1028fb7cc81324e9c38c585e6533b754e4.tar.gz
llvm-0bf7ff1028fb7cc81324e9c38c585e6533b754e4.tar.bz2
[C++20] [Moduls] Avoid computing odr hash for functions from comparing constraint expression
Previously we disabled to compute ODR hash for declarations from the global module fragment. However, we missed the case that the functions lives in the concept requiments (see the attached the test files for example). And the mismatch causes the potential crashment. Due to we will set the function body as lazy after we deserialize it and we will only take its body when needed. However, we don't allow to take the body during deserializing. So it is actually potentially problematic if we set the body as lazy first and computing the hash value of the function, which requires to deserialize its body. So we will meet a crash here. This patch tries to solve the issue by not taking the body of the function from GMF. Note that we can't skip comparing the constraint expression from the GMF directly since it is an key part of the function selecting and it may be the reason why we can't return 0 directly for `FunctionDecl::getODRHash()` from the GMF.
Diffstat (limited to 'polly')
0 files changed, 0 insertions, 0 deletions