diff options
-rw-r--r-- | gcc/cp/init.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ubsan/pr99106.C | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 49950d4..7d598f6 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -252,7 +252,7 @@ build_zero_init_1 (tree type, tree nelts, bool static_storage_p, build_one_cst (TREE_TYPE (nelts))); /* Treat flexible array members like [0] arrays. */ else if (TYPE_DOMAIN (type) == NULL_TREE) - max_index = build_minus_one_cst (sizetype); + return NULL_TREE; else max_index = array_type_nelts (type); diff --git a/gcc/testsuite/g++.dg/ubsan/pr99106.C b/gcc/testsuite/g++.dg/ubsan/pr99106.C new file mode 100644 index 0000000..ccb48a9 --- /dev/null +++ b/gcc/testsuite/g++.dg/ubsan/pr99106.C @@ -0,0 +1,5 @@ +// PR sanitizer/99106 +// { dg-do compile } +// { dg-options "-fsanitize=undefined" } + +#include "../ext/flexary38.C" |