public inbox for gcc-regression@sourceware.org help / color / mirror / Atom feed
* [r13-1405 Regression] FAIL: gcc.dg/analyzer/allocation-size-4.c warning at line 31 (test for warnings, line 28) on Linux/x86_64 @ 2022-07-02 21:10 skpandey 2022-07-02 23:20 ` [PATCH] analyzer: Use fixed-width types in allocation size tests Tim Lange 0 siblings, 1 reply; 4+ messages in thread From: skpandey @ 2022-07-02 21:10 UTC (permalink / raw) To: gcc-patches, gcc-regression, mail On Linux/x86_64, e6c3bb379f515b27268d08e62b4b3e5d7200b437 is the first bad commit commit e6c3bb379f515b27268d08e62b4b3e5d7200b437 Author: Tim Lange <mail@tim-lange.me> Date: Fri Jul 1 00:02:17 2022 +0200 analyzer: add allocation size checker [PR105900] caused FAIL: gcc.dg/analyzer/allocation-size-4.c note at line 32 (test for warnings, line 28) FAIL: gcc.dg/analyzer/allocation-size-4.c note at line 33 (test for warnings, line 28) FAIL: gcc.dg/analyzer/allocation-size-4.c warning at line 31 (test for warnings, line 28) with GCC configured with ../../gcc/configure --prefix=/local/skpandey/gccwork/toolwork/gcc-bisect-master/master/r13-1405/usr --enable-clocale=gnu --with-system-zlib --with-demangler-in-ld --with-fpmath=sse --enable-languages=c,c++,fortran --enable-cet --without-isl --enable-libmpx x86_64-linux --disable-bootstrap To reproduce: $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/allocation-size-4.c --target_board='unix{-m32}'" $ cd {build_dir}/gcc && make check RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/allocation-size-4.c --target_board='unix{-m32\ -march=cascadelake}'" (Please do not reply to this email, for question about this report, contact me at skpgkp2 at gmail dot com) ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] analyzer: Use fixed-width types in allocation size tests 2022-07-02 21:10 [r13-1405 Regression] FAIL: gcc.dg/analyzer/allocation-size-4.c warning at line 31 (test for warnings, line 28) on Linux/x86_64 skpandey @ 2022-07-02 23:20 ` Tim Lange 2022-07-02 23:38 ` David Malcolm 0 siblings, 1 reply; 4+ messages in thread From: Tim Lange @ 2022-07-02 23:20 UTC (permalink / raw) To: skpgkp2; +Cc: gcc-patches, gcc-regression, Tim Lange Hi, thanks for the mail! Embarrassingly, I did not account for the different sizes types may have on different systems. I've switched all testcases to the fixed-width types of stdint.h. Does this patch need an approval? - Tim The patch changes the types inside the tests for the allocation size checker to fixed-width types of stdint.h to account for different architectures with different type widths. 2022-07-03 Tim Lange <mail@tim-lange.me> gcc/testsuite/ChangeLog: * gcc.dg/analyzer/allocation-size-1.c: Use fixed-length types. * gcc.dg/analyzer/allocation-size-2.c: Likewise. * gcc.dg/analyzer/allocation-size-3.c: Likewise. * gcc.dg/analyzer/allocation-size-4.c: Likewise. * gcc.dg/analyzer/allocation-size-5.c: Likewise. --- .../gcc.dg/analyzer/allocation-size-1.c | 53 +++++++------- .../gcc.dg/analyzer/allocation-size-2.c | 73 ++++++++++--------- .../gcc.dg/analyzer/allocation-size-3.c | 19 ++--- .../gcc.dg/analyzer/allocation-size-4.c | 13 ++-- .../gcc.dg/analyzer/allocation-size-5.c | 23 +++--- 5 files changed, 93 insertions(+), 88 deletions(-) diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c b/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c index 4fc2bf75d6c..e6d021a128f 100644 --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c @@ -1,79 +1,80 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> /* Tests with constant buffer sizes. */ void test_1 (void) { - short *ptr = malloc (21 * sizeof (short)); + int16_t *ptr = malloc (21 * sizeof (int16_t)); free (ptr); } void test_2 (void) { - int *ptr = malloc (21 * sizeof (short)); /* { dg-line malloc2 } */ + int32_t *ptr = malloc (21 * sizeof (int16_t)); /* { dg-line malloc2 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } */ /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ } void test_3 (void) { - void *ptr = malloc (21 * sizeof (short)); - short *sptr = (short *)ptr; + void *ptr = malloc (21 * sizeof (int16_t)); + int16_t *sptr = (int16_t *)ptr; free (sptr); } void test_4 (void) { - void *ptr = malloc (21 * sizeof (short)); /* { dg-message "\\d+ bytes" } */ - int *iptr = (int *)ptr; /* { dg-line assign4 } */ + void *ptr = malloc (21 * sizeof (int16_t)); /* { dg-message "\\d+ bytes" } */ + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign4 } */ free (iptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign4 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign4 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign4 } */ } void test_5 (void) { - int user_input; + int32_t user_input; scanf("%i", &user_input); - int n; + int32_t n; if (user_input == 0) - n = 21 * sizeof (short); + n = 21 * sizeof (int16_t); else - n = 42 * sizeof (short); + n = 42 * sizeof (int16_t); void *ptr = malloc (n); - short *sptr = (short *)ptr; + int16_t *sptr = (int16_t *)ptr; free (sptr); } void test_6 (void) { - int user_input; + int32_t user_input; scanf("%i", &user_input); - int n; + int32_t n; if (user_input == 0) - n = 21 * sizeof (short); + n = 21 * sizeof (int16_t); else - n = 42 * sizeof (short); + n = 42 * sizeof (int16_t); void *ptr = malloc (n); /* { dg-message "" "note" } */ /* ^^^ on widening_svalues no expr is returned by get_representative_tree at the moment. */ - int *iptr = (int *)ptr; /* { dg-line assign6 } */ + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign6 } */ free (iptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign6 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign6 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign6 } */ } void test_7 (void) { - int user_input; + int32_t user_input; scanf("%i", &user_input); - int n; + int32_t n; if (user_input == 0) n = 1; else if (user_input == 2) @@ -82,18 +83,18 @@ void test_7 (void) n = 7; /* n is an unknown_svalue at this point. */ void *ptr = malloc (n); - int *iptr = (int *)ptr; + int32_t *iptr = (int32_t *)ptr; free (iptr); } -void *create_buffer (int n) +void *create_buffer (int32_t n) { return malloc(n); } void test_8 (void) { - int *buf = create_buffer(4 * sizeof (int)); + int32_t *buf = create_buffer(4 * sizeof (int)); free (buf); } @@ -105,11 +106,11 @@ void test_9 (void) impl_region_model_context::warn. To ensure that the indentation in the diagnostic is right, the warning has to be emitted on an EN that is after the return edge. */ - int *buf = create_buffer(42); /* { dg-warning "" "" { xfail *-*-* } } */ + int32_t *buf = create_buffer(42); /* { dg-warning "" "" { xfail *-*-* } } */ free (buf); } -void test_10 (int n) +void test_10 (int32_t n) { char *ptr = malloc (7 * n); free (ptr); diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c b/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c index 37bbbac87c5..69ca07561a6 100644 --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c @@ -1,60 +1,61 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> /* Tests with symbolic buffer sizes. */ -void test_1 (int n) +void test_1 (int32_t n) { - short *ptr = malloc (n * sizeof (short)); + int16_t *ptr = malloc (n * sizeof (int16_t)); free (ptr); } -void test_2 (int n) +void test_2 (int32_t n) { - int *ptr = malloc (n * sizeof (short)); /* { dg-line malloc2 } */ + int32_t *ptr = malloc (n * sizeof (int16_t)); /* { dg-line malloc2 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } */ /* { dg-message "'\[a-z0-9\\*\\(\\)\\s\]*' bytes" "note" { target *-*-* } malloc2 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ } -void test_3 (int n) +void test_3 (int32_t n) { - void *ptr = malloc (n * sizeof (short)); - short *sptr = (short *)ptr; + void *ptr = malloc (n * sizeof (int16_t)); + int16_t *sptr = (int16_t *)ptr; free (sptr); } -void test_4 (int n) +void test_4 (int32_t n) { - void *ptr = malloc (n * sizeof (short)); /* { dg-message "'\[a-z0-9\\*\\(\\)\\s\]*'" "note" } */ - int *iptr = (int *)ptr; /* { dg-line assign4 } */ + void *ptr = malloc (n * sizeof (int16_t)); /* { dg-message "'\[a-z0-9\\*\\(\\)\\s\]*'" "note" } */ + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign4 } */ free (iptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign4 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign4 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign4 } */ } void test_5 (void) { - int user_input; + int32_t user_input; scanf("%i", &user_input); - int n; + int32_t n; if (user_input == 0) - n = 3 * user_input * sizeof (short); + n = 3 * user_input * sizeof (int16_t); else - n = 5 * user_input * sizeof (short); + n = 5 * user_input * sizeof (int16_t); void *ptr = malloc (n); - short *sptr = (short *)ptr; + int16_t *sptr = (int16_t *)ptr; free (sptr); } void test_6 (void) { - int user_input; + int32_t user_input; scanf("%i", &user_input); - int n; + int32_t n; if (user_input == 0) n = user_input; else if (user_input == 2) @@ -63,22 +64,22 @@ void test_6 (void) n = user_input * 5; /* n is an unknown_svalue at this point. */ void *ptr = malloc (n); - int *iptr = (int *)ptr; + int32_t *iptr = (int32_t *)ptr; free (iptr); } -void *create_buffer(int n) +void *create_buffer(int32_t n) { return malloc(n); } -void test_7(int n) +void test_7(int32_t n) { - int *buf = create_buffer(n * sizeof (int)); + int32_t *buf = create_buffer(n * sizeof (int32_t)); free (buf); } -void test_8(int n) +void test_8(int32_t n) { /* FIXME: At the moment, region_model::set_value (lhs, <return_value>) is called at the src_node of the return edge. This edge has no stmts @@ -86,33 +87,33 @@ void test_8(int n) impl_region_model_context::warn. To ensure that the indentation in the diagnostic is right, the warning has to be emitted on an EN that is after the return edge. */ - int *buf = create_buffer(n * sizeof(short)); /* { dg-warning "" "" { xfail *-*-* } } */ + int32_t *buf = create_buffer(n * sizeof(int16_t)); /* { dg-warning "" "" { xfail *-*-* } } */ free (buf); } void test_9 (void) { - int n; + int32_t n; scanf("%i", &n); /* n is a conjured_svalue. */ void *ptr = malloc (n); /* { dg-message "'n' bytes" "note" } */ - int *iptr = (int *)ptr; /* { dg-line assign9 } */ + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign9 } */ free (iptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign9 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign9 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign9 } */ } void test_11 (void) { - int n; + int32_t n; scanf("%i", &n); void *ptr = malloc (n); - if (n == sizeof (int)) + if (n == sizeof (int32_t)) { /* n is a conjured_svalue but guarded such that we know the value is a multiple of sizeof (*iptr). */ - int *iptr = (int *)ptr; + int32_t *iptr = (int32_t *)ptr; free (iptr); } else @@ -121,25 +122,25 @@ void test_11 (void) void test_12 (void) { - int n; + int32_t n; scanf("%i", &n); void *ptr = malloc (n); /* { dg-message "'n' bytes" } */ if (n == 5) { /* n is a conjured_svalue but guarded such that we know the value isn't a multiple of sizeof (*iptr). */ - int *iptr = (int *)ptr; /* { dg-line assign12 } */ + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign12 } */ free (iptr); } else free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign12 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign12 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign12 } */ } void test_13 (void) { - int n; + int32_t n; scanf("%i", &n); void *ptr = malloc (n); if (n == n * n) @@ -147,7 +148,7 @@ void test_13 (void) /* n is a conjured_svalue but guarded such that we don't have an equivalence class for it. In such cases, we assume that the condition ensures that the value is okay. */ - int *iptr = (int *)ptr; + int32_t *iptr = (int32_t *)ptr; free (iptr); } else diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c b/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c index fdc1c56b7ee..eb63fa75578 100644 --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c @@ -1,10 +1,11 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> /* CWE-131 example 5 */ void test_1 (void) { - int *id_sequence = (int *) malloc (3); /* { dg-line malloc1 } */ + int32_t *id_sequence = (int32_t *) malloc (3); /* { dg-line malloc1 } */ if (id_sequence == NULL) exit (1); id_sequence[0] = 13579; @@ -15,31 +16,31 @@ void test_1 (void) /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc1 } */ /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc1 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } malloc1 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc1 } */ } void test_2 (void) { - int *ptr = malloc (10 + sizeof(int)); /* { dg-line malloc2 } */ + int32_t *ptr = malloc (10 + sizeof(int32_t)); /* { dg-line malloc2 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } */ /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ } -void test_3 (int n) +void test_3 (int32_t n) { - int *ptr = malloc (n + sizeof (int)); /* { dg-line malloc3 } */ + int32_t *ptr = malloc (n + sizeof (int32_t)); /* { dg-line malloc3 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc3 } */ /* { dg-message "'\[a-z0-9\\+\\(\\)\\s\]*' bytes" "note" { target *-*-* } malloc3 } */ - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } malloc3 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc3 } */ } -void test_4 (int n, int m) +void test_4 (int32_t n, int32_t m) { - int *ptr = malloc ((n + m) * sizeof (int)); + int32_t *ptr = malloc ((n + m) * sizeof (int32_t)); free (ptr); } diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c b/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c index e475c1586a3..73cbcc5e509 100644 --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c @@ -1,18 +1,19 @@ #include <stdlib.h> +#include <stdint.h> /* Tests related to structs. */ struct base { - int i; + int16_t i; }; struct sub { struct base b; - int j; + int16_t j; }; struct var_len { - int i; + int16_t i; char arr[]; }; @@ -25,12 +26,12 @@ void test_1 (void) void test_2 (void) { - long *ptr = malloc (5 * sizeof (struct base)); /* { dg-line malloc2 } */ + int32_t *ptr = malloc (5 * sizeof (struct base)); /* { dg-line malloc2 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } */ /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ - /* { dg-message "'long (int)? \\*' here; 'sizeof \\(long (int)?\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ } void test_3 (void) @@ -51,7 +52,7 @@ void test_5 (void) { /* For constant sizes, we warn if the buffer is too small to hold a single struct. */ - struct base *ptr = malloc (2); /* { dg-line malloc5 } */ + struct base *ptr = malloc (1); /* { dg-line malloc5 } */ free (ptr); /* { dg-warning "allocated buffer size is not a multiple of the pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc5 } */ diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c b/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c index ae7e1074ebb..7769beec274 100644 --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c @@ -1,36 +1,37 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> /* Tests related to statically allocated buffers. */ typedef struct a { - short s; + int16_t s; } a; -int *test_1 (void) +int32_t *test_1 (void) { a A; /* { dg-message "\\d+ bytes" "note" } */ A.s = 1; - int *ptr = (int *) &A; /* { dg-line assign1 } */ + 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 "assigned to 'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign1 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign1 } */ } -int *test2 (void) +int32_t *test2 (void) { - char arr[sizeof (int)]; - int *ptr = (int *)arr; + char arr[sizeof (int32_t)]; + int32_t *ptr = (int32_t *)arr; return ptr; } -int *test3 (void) +int32_t *test3 (void) { - char arr[sizeof (short)]; /* { dg-message "\\d+ bytes" "note" } */ - int *ptr = (int *)arr; /* { dg-line assign3 } */ + 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 "assigned to 'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" "note" { target *-*-* } assign3 } */ + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target *-*-* } assign3 } */ } -- 2.36.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] analyzer: Use fixed-width types in allocation size tests 2022-07-02 23:20 ` [PATCH] analyzer: Use fixed-width types in allocation size tests Tim Lange @ 2022-07-02 23:38 ` David Malcolm 2022-07-03 19:31 ` David Malcolm 0 siblings, 1 reply; 4+ messages in thread From: David Malcolm @ 2022-07-02 23:38 UTC (permalink / raw) To: Tim Lange, skpgkp2; +Cc: gcc-regression, gcc-patches On Sun, 2022-07-03 at 01:20 +0200, Tim Lange wrote: > Hi, > > thanks for the mail! Embarrassingly, I did not account for the > different > sizes types may have on different systems. I've switched all > testcases > to the fixed-width types of stdint.h. > > Does this patch need an approval? Arguably falls under the "obvious" rule. That said, the patch looks good to me, though given that the sizes are now fixed the \\d+ regexps could be made more precise, if you like; I think it's good either way. Dave > > - Tim > > The patch changes the types inside the tests for the allocation size > checker to fixed-width types of stdint.h to account for different > architectures with different type widths. > > 2022-07-03 Tim Lange <mail@tim-lange.me> > > gcc/testsuite/ChangeLog: > > * gcc.dg/analyzer/allocation-size-1.c: Use fixed-length > types. > * gcc.dg/analyzer/allocation-size-2.c: Likewise. > * gcc.dg/analyzer/allocation-size-3.c: Likewise. > * gcc.dg/analyzer/allocation-size-4.c: Likewise. > * gcc.dg/analyzer/allocation-size-5.c: Likewise. > > --- > .../gcc.dg/analyzer/allocation-size-1.c | 53 +++++++------- > .../gcc.dg/analyzer/allocation-size-2.c | 73 ++++++++++------- > -- > .../gcc.dg/analyzer/allocation-size-3.c | 19 ++--- > .../gcc.dg/analyzer/allocation-size-4.c | 13 ++-- > .../gcc.dg/analyzer/allocation-size-5.c | 23 +++--- > 5 files changed, 93 insertions(+), 88 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c > b/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c > index 4fc2bf75d6c..e6d021a128f 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c > +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c > @@ -1,79 +1,80 @@ > #include <stdlib.h> > #include <stdio.h> > +#include <stdint.h> > > /* Tests with constant buffer sizes. */ > > void test_1 (void) > { > - short *ptr = malloc (21 * sizeof (short)); > + int16_t *ptr = malloc (21 * sizeof (int16_t)); > free (ptr); > } > > void test_2 (void) > { > - int *ptr = malloc (21 * sizeof (short)); /* { dg-line malloc2 } */ > + int32_t *ptr = malloc (21 * sizeof (int16_t)); /* { dg-line > malloc2 } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } > */ > /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } malloc2 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc2 } */ > } > > void test_3 (void) > { > - void *ptr = malloc (21 * sizeof (short)); > - short *sptr = (short *)ptr; > + void *ptr = malloc (21 * sizeof (int16_t)); > + int16_t *sptr = (int16_t *)ptr; > free (sptr); > } > > void test_4 (void) > { > - void *ptr = malloc (21 * sizeof (short)); /* { dg-message "\\d+ > bytes" } */ > - int *iptr = (int *)ptr; /* { dg-line assign4 } */ > + void *ptr = malloc (21 * sizeof (int16_t)); /* { dg-message "\\d+ > bytes" } */ > + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign4 } */ > free (iptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign4 } > */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } assign4 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign4 } */ > } > > void test_5 (void) > { > - int user_input; > + int32_t user_input; > scanf("%i", &user_input); > - int n; > + int32_t n; > if (user_input == 0) > - n = 21 * sizeof (short); > + n = 21 * sizeof (int16_t); > else > - n = 42 * sizeof (short); > + n = 42 * sizeof (int16_t); > void *ptr = malloc (n); > - short *sptr = (short *)ptr; > + int16_t *sptr = (int16_t *)ptr; > free (sptr); > } > > void test_6 (void) > { > - int user_input; > + int32_t user_input; > scanf("%i", &user_input); > - int n; > + int32_t n; > if (user_input == 0) > - n = 21 * sizeof (short); > + n = 21 * sizeof (int16_t); > else > - n = 42 * sizeof (short); > + n = 42 * sizeof (int16_t); > void *ptr = malloc (n); /* { dg-message "" "note" } */ > /* ^^^ on widening_svalues no expr is > returned > by get_representative_tree at the > moment. */ > - int *iptr = (int *)ptr; /* { dg-line assign6 } */ > + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign6 } */ > free (iptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign6 } > */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } assign6 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign6 } */ > } > > void test_7 (void) > { > - int user_input; > + int32_t user_input; > scanf("%i", &user_input); > - int n; > + int32_t n; > if (user_input == 0) > n = 1; > else if (user_input == 2) > @@ -82,18 +83,18 @@ void test_7 (void) > n = 7; > /* n is an unknown_svalue at this point. */ > void *ptr = malloc (n); > - int *iptr = (int *)ptr; > + int32_t *iptr = (int32_t *)ptr; > free (iptr); > } > > -void *create_buffer (int n) > +void *create_buffer (int32_t n) > { > return malloc(n); > } > > void test_8 (void) > { > - int *buf = create_buffer(4 * sizeof (int)); > + int32_t *buf = create_buffer(4 * sizeof (int)); > free (buf); > } > > @@ -105,11 +106,11 @@ void test_9 (void) > impl_region_model_context::warn. To ensure that the indentation > in the diagnostic is right, the warning has to be emitted on an > EN > that is after the return edge. */ > - int *buf = create_buffer(42); /* { dg-warning "" "" { xfail *-*-* > } } */ > + int32_t *buf = create_buffer(42); /* { dg-warning "" "" { xfail *- > *-* } } */ > free (buf); > } > > -void test_10 (int n) > +void test_10 (int32_t n) > { > char *ptr = malloc (7 * n); > free (ptr); > diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c > b/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c > index 37bbbac87c5..69ca07561a6 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c > +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c > @@ -1,60 +1,61 @@ > #include <stdlib.h> > #include <stdio.h> > +#include <stdint.h> > > /* Tests with symbolic buffer sizes. */ > > -void test_1 (int n) > +void test_1 (int32_t n) > { > - short *ptr = malloc (n * sizeof (short)); > + int16_t *ptr = malloc (n * sizeof (int16_t)); > free (ptr); > } > > -void test_2 (int n) > +void test_2 (int32_t n) > { > - int *ptr = malloc (n * sizeof (short)); /* { dg-line malloc2 } */ > + int32_t *ptr = malloc (n * sizeof (int16_t)); /* { dg-line malloc2 > } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } > */ > /* { dg-message "'\[a-z0-9\\*\\(\\)\\s\]*' bytes" "note" { target > *-*-* } malloc2 } */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } malloc2 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc2 } */ > } > > -void test_3 (int n) > +void test_3 (int32_t n) > { > - void *ptr = malloc (n * sizeof (short)); > - short *sptr = (short *)ptr; > + void *ptr = malloc (n * sizeof (int16_t)); > + int16_t *sptr = (int16_t *)ptr; > free (sptr); > } > > -void test_4 (int n) > +void test_4 (int32_t n) > { > - void *ptr = malloc (n * sizeof (short)); /* { dg-message "'\[a-z0- > 9\\*\\(\\)\\s\]*'" "note" } */ > - int *iptr = (int *)ptr; /* { dg-line assign4 } */ > + void *ptr = malloc (n * sizeof (int16_t)); /* { dg-message "'\[a- > z0-9\\*\\(\\)\\s\]*'" "note" } */ > + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign4 } */ > free (iptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign4 } > */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } assign4 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign4 } */ > } > > void test_5 (void) > { > - int user_input; > + int32_t user_input; > scanf("%i", &user_input); > - int n; > + int32_t n; > if (user_input == 0) > - n = 3 * user_input * sizeof (short); > + n = 3 * user_input * sizeof (int16_t); > else > - n = 5 * user_input * sizeof (short); > + n = 5 * user_input * sizeof (int16_t); > void *ptr = malloc (n); > - short *sptr = (short *)ptr; > + int16_t *sptr = (int16_t *)ptr; > free (sptr); > } > > void test_6 (void) > { > - int user_input; > + int32_t user_input; > scanf("%i", &user_input); > - int n; > + int32_t n; > if (user_input == 0) > n = user_input; > else if (user_input == 2) > @@ -63,22 +64,22 @@ void test_6 (void) > n = user_input * 5; > /* n is an unknown_svalue at this point. */ > void *ptr = malloc (n); > - int *iptr = (int *)ptr; > + int32_t *iptr = (int32_t *)ptr; > free (iptr); > } > > -void *create_buffer(int n) > +void *create_buffer(int32_t n) > { > return malloc(n); > } > > -void test_7(int n) > +void test_7(int32_t n) > { > - int *buf = create_buffer(n * sizeof (int)); > + int32_t *buf = create_buffer(n * sizeof (int32_t)); > free (buf); > } > > -void test_8(int n) > +void test_8(int32_t n) > { > /* FIXME: At the moment, region_model::set_value (lhs, > <return_value>) > is called at the src_node of the return edge. This edge has no > stmts > @@ -86,33 +87,33 @@ void test_8(int n) > impl_region_model_context::warn. To ensure that the indentation > in the diagnostic is right, the warning has to be emitted on an > EN > that is after the return edge. */ > - int *buf = create_buffer(n * sizeof(short)); /* { dg-warning "" "" > { xfail *-*-* } } */ > + int32_t *buf = create_buffer(n * sizeof(int16_t)); /* { dg-warning > "" "" { xfail *-*-* } } */ > free (buf); > } > > void test_9 (void) > { > - int n; > + int32_t n; > scanf("%i", &n); > /* n is a conjured_svalue. */ > void *ptr = malloc (n); /* { dg-message "'n' bytes" "note" } */ > - int *iptr = (int *)ptr; /* { dg-line assign9 } */ > + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign9 } */ > free (iptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign9 } > */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } assign9 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign9 } */ > } > > void test_11 (void) > { > - int n; > + int32_t n; > scanf("%i", &n); > void *ptr = malloc (n); > - if (n == sizeof (int)) > + if (n == sizeof (int32_t)) > { > /* n is a conjured_svalue but guarded such that we > know the value is a multiple of sizeof (*iptr). */ > - int *iptr = (int *)ptr; > + int32_t *iptr = (int32_t *)ptr; > free (iptr); > } > else > @@ -121,25 +122,25 @@ void test_11 (void) > > void test_12 (void) > { > - int n; > + int32_t n; > scanf("%i", &n); > void *ptr = malloc (n); /* { dg-message "'n' bytes" } */ > if (n == 5) > { > /* n is a conjured_svalue but guarded such that we > know the value isn't a multiple of sizeof (*iptr). */ > - int *iptr = (int *)ptr; /* { dg-line assign12 } */ > + int32_t *iptr = (int32_t *)ptr; /* { dg-line assign12 } */ > free (iptr); > } > else > free (ptr); > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } assign12 } > */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } assign12 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign12 } */ > } > > void test_13 (void) > { > - int n; > + int32_t n; > scanf("%i", &n); > void *ptr = malloc (n); > if (n == n * n) > @@ -147,7 +148,7 @@ void test_13 (void) > /* n is a conjured_svalue but guarded such that we don't have > an > equivalence class for it. In such cases, we assume that the > condition ensures that the value is okay. */ > - int *iptr = (int *)ptr; > + int32_t *iptr = (int32_t *)ptr; > free (iptr); > } > else > diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c > b/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c > index fdc1c56b7ee..eb63fa75578 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c > +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c > @@ -1,10 +1,11 @@ > #include <stdlib.h> > #include <stdio.h> > +#include <stdint.h> > > /* CWE-131 example 5 */ > void test_1 (void) > { > - int *id_sequence = (int *) malloc (3); /* { dg-line malloc1 } */ > + int32_t *id_sequence = (int32_t *) malloc (3); /* { dg-line > malloc1 } */ > if (id_sequence == NULL) exit (1); > > id_sequence[0] = 13579; > @@ -15,31 +16,31 @@ void test_1 (void) > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc1 } > */ > /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc1 } */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } malloc1 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc1 } */ > } > > void test_2 (void) > { > - int *ptr = malloc (10 + sizeof(int)); /* { dg-line malloc2 } */ > + int32_t *ptr = malloc (10 + sizeof(int32_t)); /* { dg-line malloc2 > } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } > */ > /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } malloc2 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc2 } */ > } > > -void test_3 (int n) > +void test_3 (int32_t n) > { > - int *ptr = malloc (n + sizeof (int)); /* { dg-line malloc3 } */ > + int32_t *ptr = malloc (n + sizeof (int32_t)); /* { dg-line malloc3 > } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc3 } > */ > /* { dg-message "'\[a-z0-9\\+\\(\\)\\s\]*' bytes" "note" { target > *-*-* } malloc3 } */ > - /* { dg-message "'int \\*' here; 'sizeof \\(int\\)' is '\\d+'" > "note" { target *-*-* } malloc3 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc3 } */ > } > > -void test_4 (int n, int m) > +void test_4 (int32_t n, int32_t m) > { > - int *ptr = malloc ((n + m) * sizeof (int)); > + int32_t *ptr = malloc ((n + m) * sizeof (int32_t)); > free (ptr); > } > diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c > b/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c > index e475c1586a3..73cbcc5e509 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c > +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c > @@ -1,18 +1,19 @@ > #include <stdlib.h> > +#include <stdint.h> > > /* Tests related to structs. */ > > struct base { > - int i; > + int16_t i; > }; > > struct sub { > struct base b; > - int j; > + int16_t j; > }; > > struct var_len { > - int i; > + int16_t i; > char arr[]; > }; > > @@ -25,12 +26,12 @@ void test_1 (void) > > void test_2 (void) > { > - long *ptr = malloc (5 * sizeof (struct base)); /* { dg-line > malloc2 } */ > + int32_t *ptr = malloc (5 * sizeof (struct base)); /* { dg-line > malloc2 } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc2 } > */ > /* { dg-message "\\d+ bytes" "note" { target *-*-* } malloc2 } */ > - /* { dg-message "'long (int)? \\*' here; 'sizeof \\(long > (int)?\\)' is '\\d+'" "note" { target *-*-* } malloc2 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } malloc2 } */ > } > > void test_3 (void) > @@ -51,7 +52,7 @@ void test_5 (void) > { > /* For constant sizes, we warn if the buffer > is too small to hold a single struct. */ > - struct base *ptr = malloc (2); /* { dg-line malloc5 } */ > + struct base *ptr = malloc (1); /* { dg-line malloc5 } */ > free (ptr); > > /* { dg-warning "allocated buffer size is not a multiple of the > pointee's size \\\[CWE-131\\\]" "warning" { target *-*-* } malloc5 } > */ > diff --git a/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c > b/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c > index ae7e1074ebb..7769beec274 100644 > --- a/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c > +++ b/gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c > @@ -1,36 +1,37 @@ > #include <stdlib.h> > #include <stdio.h> > +#include <stdint.h> > > /* Tests related to statically allocated buffers. */ > > typedef struct a { > - short s; > + int16_t s; > } a; > > -int *test_1 (void) > +int32_t *test_1 (void) > { > a A; /* { dg-message "\\d+ bytes" "note" } */ > A.s = 1; > - int *ptr = (int *) &A; /* { dg-line assign1 } */ > + 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 "assigned to 'int \\*' here; 'sizeof \\(int\\)' is > '\\d+'" "note" { target *-*-* } assign1 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign1 } */ > } > > -int *test2 (void) > +int32_t *test2 (void) > { > - char arr[sizeof (int)]; > - int *ptr = (int *)arr; > + char arr[sizeof (int32_t)]; > + int32_t *ptr = (int32_t *)arr; > return ptr; > } > > -int *test3 (void) > +int32_t *test3 (void) > { > - char arr[sizeof (short)]; /* { dg-message "\\d+ bytes" "note" } */ > - int *ptr = (int *)arr; /* { dg-line assign3 } */ > + 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 "assigned to 'int \\*' here; 'sizeof \\(int\\)' is > '\\d+'" "note" { target *-*-* } assign3 } */ > + /* { dg-message "'int32_t \\*' (\\\{aka 'int \\*'\\\})? here; > 'sizeof \\(int32_t (\\\{aka int\\\})\\)' is '\\d+'" "note" { target > *-*-* } assign3 } */ > } ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] analyzer: Use fixed-width types in allocation size tests 2022-07-02 23:38 ` David Malcolm @ 2022-07-03 19:31 ` David Malcolm 0 siblings, 0 replies; 4+ messages in thread From: David Malcolm @ 2022-07-03 19:31 UTC (permalink / raw) To: Tim Lange, skpgkp2; +Cc: gcc-regression, gcc-patches On Sat, 2022-07-02 at 19:38 -0400, David Malcolm wrote: > On Sun, 2022-07-03 at 01:20 +0200, Tim Lange wrote: > > Hi, > > > > thanks for the mail! Embarrassingly, I did not account for the > > different > > sizes types may have on different systems. I've switched all > > testcases > > to the fixed-width types of stdint.h. > > > > Does this patch need an approval? > > Arguably falls under the "obvious" rule. > > That said, the patch looks good to me, though given that the sizes > are > now fixed the \\d+ regexps could be made more precise, if you like; I > think it's good either way. ...and in case I didn't say earlier, Tim: congratulations on getting your first patch into gcc. Dave ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-07-03 19:31 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-07-02 21:10 [r13-1405 Regression] FAIL: gcc.dg/analyzer/allocation-size-4.c warning at line 31 (test for warnings, line 28) on Linux/x86_64 skpandey 2022-07-02 23:20 ` [PATCH] analyzer: Use fixed-width types in allocation size tests Tim Lange 2022-07-02 23:38 ` David Malcolm 2022-07-03 19:31 ` David Malcolm
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).