aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorJean Perier <jperier@nvidia.com>2022-03-11 09:22:47 +0100
committerJean Perier <jperier@nvidia.com>2022-03-11 09:26:21 +0100
commita7802a806d5f8dea2038507f4746b661d4e9bf97 (patch)
tree5689240f50eb9b2b5fdce1ef9984f86bc19b5972 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent3ed643ea765411a3837b6fbb2e6f3b5a6bd616a3 (diff)
downloadllvm-a7802a806d5f8dea2038507f4746b661d4e9bf97.zip
llvm-a7802a806d5f8dea2038507f4746b661d4e9bf97.tar.gz
llvm-a7802a806d5f8dea2038507f4746b661d4e9bf97.tar.bz2
[flang] Do not return true for pointer sub-object in IsPointerObject
evaluate::IsPointerObject used to return true for pointer suboject like `pointer(10)` while these object are not pointers. This prevented some checks like 15.5.2.7 to be correctly enforced (e.g., it was possible to pass `pointer(10)` to a non intent(in) dummy pointer). After updating IsPointerObject behavior and adding a test for 15.5.2.7 in call07.f90, a test in call03.f90 for 15.5.2.4(14) was failing. It appeared the related semantics check was relying on IsPointerObject to return true for `pointer(10)`. Adapt the code to detect pointer element in another way. While looking at the code, I also noticed that semantics was rejecting `character(1)` pointer/assumed shape suboject when these are allowed (the standard has a special case for character(1) in 15.5.2.4(14), and I verified that other compilers that enforce 15.5.2.4(14) do accept this). Differential Revision: https://reviews.llvm.org/D121377
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions