aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/ChangeLog-2020
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2024-06-17 17:53:12 -0400
committerRichard Biener <rguenth@gcc.gnu.org>2024-07-18 13:50:42 +0200
commitc314867fc06d475e3c2ace32032e0d72e3915b55 (patch)
tree9115c721d28aea07b9df1b9b9689ddc171178fd2 /libgfortran/ChangeLog-2020
parenta4c9ade72885f9cf72c873d110545e4e3c2c7805 (diff)
downloadgcc-releases/gcc-14.zip
gcc-releases/gcc-14.tar.gz
gcc-releases/gcc-14.tar.bz2
c++: ICE with __has_unique_object_representations [PR115476]releases/gcc-14
Here we started to ICE with r13-25: in check_trait_type, for "X[]" we return true here: if (kind == 1 && TREE_CODE (type) == ARRAY_TYPE && !TYPE_DOMAIN (type)) return true; // Array of unknown bound. Don't care about completeness. and then end up crashing in record_has_unique_obj_representations: 4836 if (cur != wi::to_offset (sz)) because sz is null. https://eel.is/c++draft/type.traits#tab:meta.unary.prop-row-47-column-3-sentence-1 says that the preconditions for __has_unique_object_representations are: "T shall be a complete type, cv void, or an array of unknown bound" and that "For an array type T, the same result as has_unique_object_representations_v<remove_all_extents_t<T>>" so T[] should be treated as T. So we should use kind==2 for the trait. PR c++/115476 gcc/cp/ChangeLog: * semantics.cc (finish_trait_expr) <case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS>: Move below to call check_trait_type with kind==2. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/has-unique-obj-representations4.C: New test. (cherry picked from commit fc382a373e6824bb998007d1dcb0805b0cf4b8e8)
Diffstat (limited to 'libgfortran/ChangeLog-2020')
0 files changed, 0 insertions, 0 deletions