Fix ICE because of forgotten checks for pointers to void
and incomplete arrays.
Committed as obvious.
PR c/112347
gcc/c:
* c-typeck.cc (convert_for_assignment): Add missing check.
gcc/testsuite:
* gcc.dg/Walloc-size-3.c: New test.
idx = TREE_INT_CST_LOW (TREE_VALUE (TREE_CHAIN (args))) - 1;
tree arg = CALL_EXPR_ARG (rhs, idx);
if (TREE_CODE (arg) == INTEGER_CST
+ && !VOID_TYPE_P (ttl) && TYPE_SIZE_UNIT (ttl)
&& INTEGER_CST == TREE_CODE (TYPE_SIZE_UNIT (ttl))
&& tree_int_cst_lt (arg, TYPE_SIZE_UNIT (ttl)))
warning_at (location, OPT_Walloc_size, "allocation of "
--- /dev/null
+/* PR 112347
+ { dg-do compile }
+ { dg-options "-Walloc-size" }
+ * */
+
+// Test that various types without size do not crash with -Walloc-size
+
+int * mallocx(unsigned long) __attribute__((malloc)) __attribute__((alloc_size(1)));
+void test_oom(void) { void *a_ = mallocx(1); }
+
+void parse_args(char (**child_args_ptr_ptr)[]) {
+ *child_args_ptr_ptr = __builtin_calloc(1, sizeof(char));
+}
+
+