aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <herron.philip@googlemail.com>2025-03-28 18:24:57 +0000
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-31 21:07:25 +0200
commite0df215ca50c2bd2a0ccc103484b629d2fbd43ec (patch)
tree07297671d3e66c135e9720ab054db3e34771ac47 /gcc
parent5d6467f637273418535316b051491e0ad594a194 (diff)
downloadgcc-e0df215ca50c2bd2a0ccc103484b629d2fbd43ec.zip
gcc-e0df215ca50c2bd2a0ccc103484b629d2fbd43ec.tar.gz
gcc-e0df215ca50c2bd2a0ccc103484b629d2fbd43ec.tar.bz2
gccrs: fix ice when setting up regions
num regions is based on the used arguments of regions which can be less than the substutions requirements. So lets check for that and allow anon regions to be created for them. Fixes Rust-GCC#3605 gcc/rust/ChangeLog: * typecheck/rust-tyty-subst.h: check for min range gcc/testsuite/ChangeLog: * rust/compile/issue-3605.rs: New test. Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-tyty-subst.h2
-rw-r--r--gcc/testsuite/rust/compile/issue-3605.rs5
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/rust/typecheck/rust-tyty-subst.h b/gcc/rust/typecheck/rust-tyty-subst.h
index b8e928d..3f0b912 100644
--- a/gcc/rust/typecheck/rust-tyty-subst.h
+++ b/gcc/rust/typecheck/rust-tyty-subst.h
@@ -125,7 +125,7 @@ public:
std::vector<Region> subst)
{
RegionParamList list (num_regions);
- for (size_t i = 0; i < subst.size (); i++)
+ for (size_t i = 0; i < MIN (num_regions, subst.size ()); i++)
list.regions.at (i) = subst.at (i);
for (size_t i = subst.size (); i < num_regions; i++)
{
diff --git a/gcc/testsuite/rust/compile/issue-3605.rs b/gcc/testsuite/rust/compile/issue-3605.rs
new file mode 100644
index 0000000..05e6e48
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-3605.rs
@@ -0,0 +1,5 @@
+enum Foo<'a> {}
+
+enum Bar<'a> {
+ in_band_def_explicit_impl(Foo<'a>),
+}