analyzer: Bail out on function pointer for -Wanalyzer-allocation-size
On s390 pr94688.c is failing due to excess error pr94688.c:6:5: warning: allocated buffer size is not a multiple of the pointee's size [CWE-131] [-Wanalyzer-allocation-size] This is because on s390 functions are by default aligned to an 8-byte boundary and during function type construction size is set to function boundary. Thus, for the assignment a.0_1 = (void (*<T237>) ()) &a; we have that the right-hand side is pointing to a 4-byte memory region whereas the size of the function pointer is 8 byte and a warning is emitted. Since -Wanalyzer-allocation-size is not about pointers to code, bail out early. gcc/analyzer/ChangeLog: * region-model.cc (region_model::check_region_size): Bail out early on function pointers.
This commit is contained in:
parent
8c6f13d2cc
commit
67e1433a94
1 changed files with 4 additions and 0 deletions
|
@ -3514,6 +3514,10 @@ region_model::check_region_size (const region *lhs_reg, const svalue *rhs_sval,
|
|||
|| TYPE_SIZE_UNIT (pointee_type) == NULL_TREE)
|
||||
return;
|
||||
|
||||
/* Bail out early on function pointers. */
|
||||
if (TREE_CODE (pointee_type) == FUNCTION_TYPE)
|
||||
return;
|
||||
|
||||
/* Bail out early on pointers to structs where we can
|
||||
not deduce whether the buffer size is compatible. */
|
||||
bool is_struct = RECORD_OR_UNION_TYPE_P (pointee_type);
|
||||
|
|
Loading…
Add table
Reference in a new issue