diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2022-11-29 12:29:30 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2022-12-01 14:53:54 +0100 |
commit | 798c08ca4bf3681444426093263e9e6746d1c32b (patch) | |
tree | eda0b90eab97594b1fc4b9a2f4fdcc04b312d318 | |
parent | 82cf82c4610dbf2a1021841fea3700a477246b79 (diff) | |
download | gcc-798c08ca4bf3681444426093263e9e6746d1c32b.zip gcc-798c08ca4bf3681444426093263e9e6746d1c32b.tar.gz gcc-798c08ca4bf3681444426093263e9e6746d1c32b.tar.bz2 |
ada: Strip conversions for the implementation of storage models
This is necessary for unconstrained allocators with qualified expression.
gcc/ada/
* gcc-interface/trans.cc (get_storage_model_access): Strip any type
conversion around the node before looking into it.
-rw-r--r-- | gcc/ada/gcc-interface/trans.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc index b9d7c01..a012271 100644 --- a/gcc/ada/gcc-interface/trans.cc +++ b/gcc/ada/gcc-interface/trans.cc @@ -4400,6 +4400,11 @@ get_storage_model_access (Node_Id gnat_node, Entity_Id *gnat_smo) return; } + /* Now strip any type conversion from GNAT_NODE. */ + if (Nkind (gnat_node) == N_Type_Conversion + || Nkind (gnat_node) == N_Unchecked_Type_Conversion) + gnat_node = Expression (gnat_node); + while (node_is_component (gnat_node)) gnat_node = Prefix (gnat_node); |