aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorTom Eccles <tom.eccles@arm.com>2024-02-01 10:23:24 +0000
committerGitHub <noreply@github.com>2024-02-01 10:23:24 +0000
commite9e01675a31969d5ae7c250caa6efcc8dcdb80bc (patch)
tree0b03193da957b1c69bf2a02d205032529df286ac /clang/lib/CodeGen/CodeGenModule.cpp
parentca7fd25492388003fab4e19d7e95517bdee2d210 (diff)
downloadllvm-e9e01675a31969d5ae7c250caa6efcc8dcdb80bc.zip
llvm-e9e01675a31969d5ae7c250caa6efcc8dcdb80bc.tar.gz
llvm-e9e01675a31969d5ae7c250caa6efcc8dcdb80bc.tar.bz2
[flang][HLFIR] Relax verifiers of intrinsic operations (#80132)
The verifiers are currently very strict: requiring intrinsic operations to be used only in cases where the Fortran standard permits the intrinsic to be used. There have now been a lot of cases where these verifiers have caused bugs in corner cases. In a recent ticket, @jeanPerier pointed out that it could be useful for future optimizations if somewhat invalid uses of these operations could be allowed in dead code. See this comment: https://github.com/llvm/llvm-project/issues/79995#issuecomment-1918118234 In response to all of this, I have decided to relax the intrinsic operation verifiers. The intention is now to only disallow operation uses that are likely to crash the compiler. Other checks are still available under `-strict-intrinsic-verifier`. The disadvantage of this approach is that IR can now represent intrinsic invocations which are incorrect. The lowering and implementation of these intrinsic functions is unlikely to do the right thing in all of these cases, and as they should mostly be impossible to generate using normal Fortran code, these edge cases will see very little testing, before some new optimization causes them to become more common. Fixes #79995
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions