Re: [PATCH] Fix PR sanitizer/78270 (part 2)

2016-11-16 Thread Martin Liška
On 11/16/2016 12:35 PM, Jakub Jelinek wrote:
> On Fri, Nov 11, 2016 at 02:44:40PM +0100, Martin Liška wrote:
>> Hello.
>>
>> Due to a stupid mistake I did, following patch is needed for the test-case
>> to properly save previous gimplify_ctxp->live_switch_vars.
>>
>> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
>> I was able to run asan bootstrap on x86_64-linux-gnu and kernel build with
>> allyesconfig works fine.
>>
>> Ready to be installed?
>> Martin
> 
>> >From 53dd3c035283863a25a24feb90bf359295999bca Mon Sep 17 00:00:00 2001
>> From: marxin 
>> Date: Fri, 11 Nov 2016 11:21:29 +0100
>> Subject: [PATCH] Fix PR sanitizer/78270 (part 2)
>>
>> gcc/ChangeLog:
>>
>> 2016-11-11  Martin Liska  
>>
>>  PR sanitizer/78270
>>  * gimplify.c (gimplify_switch_expr): Always save previous
>>  gimplify_ctxp->live_switch_vars.
>>
>> gcc/testsuite/ChangeLog:
>>
>> 2016-11-11  Martin Liska  
>>
>>  PR sanitizer/78270
>>  * gcc.dg/asan/pr78270-2.c: New test.
> 
> Ok, thanks.
> 
>> --- /dev/null
>> +++ b/gcc/testsuite/gcc.dg/asan/pr78270-2.c
>> @@ -0,0 +1,17 @@
>> +// { dg-do compile }
>> +// { dg-additional-options "-Wno-switch-unreachable" }
> 
> Please use /* */ comments instead of //, that is common
> in the gcc.dg/ tests, and start with
> /* PR sanitizer/78270 */
> line.
> 
> Thanks.
> 
>   Jakub
> 

Ok, I did the same also for pr78270.c file, patch is installed as r242485.

Thanks,
Martin


Re: [PATCH] Fix PR sanitizer/78270 (part 2)

2016-11-16 Thread Jakub Jelinek
On Fri, Nov 11, 2016 at 02:44:40PM +0100, Martin Liška wrote:
> Hello.
> 
> Due to a stupid mistake I did, following patch is needed for the test-case
> to properly save previous gimplify_ctxp->live_switch_vars.
> 
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
> I was able to run asan bootstrap on x86_64-linux-gnu and kernel build with
> allyesconfig works fine.
> 
> Ready to be installed?
> Martin

> >From 53dd3c035283863a25a24feb90bf359295999bca Mon Sep 17 00:00:00 2001
> From: marxin 
> Date: Fri, 11 Nov 2016 11:21:29 +0100
> Subject: [PATCH] Fix PR sanitizer/78270 (part 2)
> 
> gcc/ChangeLog:
> 
> 2016-11-11  Martin Liska  
> 
>   PR sanitizer/78270
>   * gimplify.c (gimplify_switch_expr): Always save previous
>   gimplify_ctxp->live_switch_vars.
> 
> gcc/testsuite/ChangeLog:
> 
> 2016-11-11  Martin Liska  
> 
>   PR sanitizer/78270
>   * gcc.dg/asan/pr78270-2.c: New test.

Ok, thanks.

> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/asan/pr78270-2.c
> @@ -0,0 +1,17 @@
> +// { dg-do compile }
> +// { dg-additional-options "-Wno-switch-unreachable" }

Please use /* */ comments instead of //, that is common
in the gcc.dg/ tests, and start with
/* PR sanitizer/78270 */
line.

Thanks.

Jakub


Re: [PATCH] Fix PR sanitizer/78270 (part 2)

2016-11-16 Thread Martin Liška
I'm pinging this as it breaks ASAN bootstrap.

On 11/11/2016 02:44 PM, Martin Liška wrote:
> Hello.
> 
> Due to a stupid mistake I did, following patch is needed for the test-case
> to properly save previous gimplify_ctxp->live_switch_vars.
> 
> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
> I was able to run asan bootstrap on x86_64-linux-gnu and kernel build with
> allyesconfig works fine.
> 
> Ready to be installed?
> Martin
> 



[PATCH] Fix PR sanitizer/78270 (part 2)

2016-11-11 Thread Martin Liška
Hello.

Due to a stupid mistake I did, following patch is needed for the test-case
to properly save previous gimplify_ctxp->live_switch_vars.

Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
I was able to run asan bootstrap on x86_64-linux-gnu and kernel build with
allyesconfig works fine.

Ready to be installed?
Martin
>From 53dd3c035283863a25a24feb90bf359295999bca Mon Sep 17 00:00:00 2001
From: marxin 
Date: Fri, 11 Nov 2016 11:21:29 +0100
Subject: [PATCH] Fix PR sanitizer/78270 (part 2)

gcc/ChangeLog:

2016-11-11  Martin Liska  

	PR sanitizer/78270
	* gimplify.c (gimplify_switch_expr): Always save previous
	gimplify_ctxp->live_switch_vars.

gcc/testsuite/ChangeLog:

2016-11-11  Martin Liska  

	PR sanitizer/78270
	* gcc.dg/asan/pr78270-2.c: New test.
---
 gcc/gimplify.c|  8 
 gcc/testsuite/gcc.dg/asan/pr78270-2.c | 17 +
 2 files changed, 21 insertions(+), 4 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/asan/pr78270-2.c

diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 16573dd..c23888b 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -2255,11 +2255,11 @@ gimplify_switch_expr (tree *expr_p, gimple_seq *pre_p)
   gimplify_ctxp->case_labels.create (8);
 
   /* Do not create live_switch_vars if SWITCH_BODY is not a BIND_EXPR.  */
+  saved_live_switch_vars = gimplify_ctxp->live_switch_vars;
   if (TREE_CODE (SWITCH_BODY (switch_expr)) == BIND_EXPR)
-	{
-	  saved_live_switch_vars = gimplify_ctxp->live_switch_vars;
-	  gimplify_ctxp->live_switch_vars = new hash_set (4);
-	}
+	gimplify_ctxp->live_switch_vars = new hash_set (4);
+  else
+	gimplify_ctxp->live_switch_vars = NULL;
 
   bool old_in_switch_expr = gimplify_ctxp->in_switch_expr;
   gimplify_ctxp->in_switch_expr = true;
diff --git a/gcc/testsuite/gcc.dg/asan/pr78270-2.c b/gcc/testsuite/gcc.dg/asan/pr78270-2.c
new file mode 100644
index 000..d1f5d26
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/pr78270-2.c
@@ -0,0 +1,17 @@
+// { dg-do compile }
+// { dg-additional-options "-Wno-switch-unreachable" }
+
+int a;
+void
+fn1 ()
+{
+  switch (a)
+{
+  char b;
+case 8:
+  &b;
+  switch (0)
+	;
+}
+}
+
-- 
2.10.1