#include #include #include /* Tests related to statically allocated buffers. */ typedef struct a { int16_t s; } a; int32_t *test_1 (void) { a A; /* { dg-message "\\d+ bytes" "note" } */ A.s = 1; int32_t *ptr = (int32_t *) &A; /* { dg-line assign1 } */ return ptr; /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign1 } */ /* { dg-message "'int32_t \\*' (\\\{aka '(long )?int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka (long )?int\\\})?\\)' is '4'" "note" { target *-*-* } assign1 } */ } int32_t *test2 (void) { char arr[sizeof (int32_t)]; int32_t *ptr = (int32_t *)arr; return ptr; } int32_t *test3 (void) { char arr[sizeof (int16_t)]; /* { dg-message "\\d+ bytes" "note" } */ int32_t *ptr = (int32_t *)arr; /* { dg-line assign3 } */ return ptr; /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign3 } */ /* { dg-message "'int32_t \\*' (\\\{aka '(long )?int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka (long )?int\\\})?\\)' is '4'" "note" { target *-*-* } assign3 } */ }