public inbox for gcc-regression@sourceware.org
help / color / mirror / Atom feed
From: David Malcolm <dmalcolm@redhat.com>
To: Tim Lange <mail@tim-lange.me>, skpgkp2@gmail.com
Cc: gcc-regression@gcc.gnu.org, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] analyzer: Use fixed-width types in allocation size tests
Date: Sat, 02 Jul 2022 19:38:13 -0400	[thread overview]
Message-ID: <8c3d7ec0d17128ca1fd9e18cb82ba6e773d6c378.camel@redhat.com> (raw)
In-Reply-To: <20220702232011.51345-1-mail@tim-lange.me>

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 } */
>  }




  reply	other threads:[~2022-07-02 23:38 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2022-07-03 19:31     ` David Malcolm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8c3d7ec0d17128ca1fd9e18cb82ba6e773d6c378.camel@redhat.com \
    --to=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gcc-regression@gcc.gnu.org \
    --cc=mail@tim-lange.me \
    --cc=skpgkp2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).