c: Add missing conditions in Walloc-size to avoid ICEs [PR112347]
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.
This commit is contained in:
parent
04802ed3b9
commit
f432a594fe
2 changed files with 16 additions and 0 deletions
|
@ -7367,6 +7367,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type,
|
|||
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 "
|
||||
|
|
15
gcc/testsuite/gcc.dg/Walloc-size-3.c
Normal file
15
gcc/testsuite/gcc.dg/Walloc-size-3.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* 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));
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue