This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix ubsan and C++14 constexpr ICEs (PR sanitizer/63956)


On Feb 11, 2015, at 4:24 AM, Marek Polacek <polacek@redhat.com> wrote:
> 
> The following patch splits the test into C and C++ test cases, so
> hopefully fixing the issue.  Ok for trunk?
> 
> 2015-02-11  Marek Polacek  <polacek@redhat.com>
> 
> 	* g++.dg/ubsan/shift-1.C: New test.
> 	* gcc.dg/ubsan/c-shift-2.c: New test.
> 	* c-c++-common/ubsan/shift-5.c: Remove file.
> 
> diff --git gcc/testsuite/g++.dg/ubsan/shift-1.C gcc/testsuite/g++.dg/ubsan/shift-1.C
> index e69de29..8a71279 100644
> --- gcc/testsuite/g++.dg/ubsan/shift-1.C
> +++ gcc/testsuite/g++.dg/ubsan/shift-1.C
> @@ -0,0 +1,37 @@
> +/* { dg-do compile } */
> +/* { dg-options "-fsanitize=shift -w" } */
> +/* { dg-shouldfail "ubsan" } */
> +
> +int
> +foo (int x)
> +{
> +  /* None of the following should pass.  */
> +  switch (x)
> +    {
> +    case 1 >> -1:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 11 } */

Never include line numbers, unless there is no other way.  Here, I think you can drop it, and merely ensure this is on the right line?

An example from gcc.dg:

int g2(int a; __attribute__((unused))); /* { dg-error "just a forward declaration" "no parms" { xfail *-*-* } } */

I’m hoping that style will work.

> +    case -1 >> -1:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 13 } */

Likewise.

> +    case 1 << -1:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 15 } */

Likewise.

> +    case -1 << -1:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 17 } */

Likewise.

> +      return 1;
> +    }
> +  return 0;
> +}
> +
> +int
> +bar (int x)
> +{
> +  /* None of the following should pass.  */
> +  switch (x)
> +    {
> +    case -1 >> 200:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 30 } */

Likewise.

> +    case 1 << 200:
> +/* { dg-error "is not a constant expression" "" { xfail { *-*-* } } 32 } */

Likewise.

Ok with the above fixes, if applicable.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]