diff mbox series

gimple-ssa-warn-alloca: Always initialize limit [PR99989]

Message ID 20210410061133.GJ1179226@tucnak
State New
Headers show
Series gimple-ssa-warn-alloca: Always initialize limit [PR99989] | expand

Commit Message

Jakub Jelinek April 10, 2021, 6:11 a.m. UTC
Hi!

This PR is about a -W*uninitialized warning on riscv64. 
alloca_type_and_limit is documented to have limit member only defined
when type is ALLOCA_BOUND_MAYBE_LARGE or ALLOCA_BOUND_DEFINITELY_LARGE
and otherwise just default constructs limit, which for wide_int means
no initialization at all.  IMHO it is fine not to use the limit
member otherwise, but trying to not initialize it when it can be e.g.
copied around and then invoke UB doesn't look like a good idea.

Bootstrapped/regtested on x86_64-linux and i686-linux, though I don't have
riscv64 access to verify if it fixes the reported warning.  Ok for trunk?

2021-04-10  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/99989
	* gimple-ssa-warn-alloca.c
	(alloca_type_and_limit::alloca_type_and_limit): Initialize limit to
	0 with integer precision unconditionally.


	Jakub

Comments

Richard Biener April 10, 2021, 10:39 a.m. UTC | #1
On April 10, 2021 8:11:33 AM GMT+02:00, Jakub Jelinek <jakub@redhat.com> wrote:
>Hi!
>
>This PR is about a -W*uninitialized warning on riscv64. 
>alloca_type_and_limit is documented to have limit member only defined
>when type is ALLOCA_BOUND_MAYBE_LARGE or ALLOCA_BOUND_DEFINITELY_LARGE
>and otherwise just default constructs limit, which for wide_int means
>no initialization at all.  IMHO it is fine not to use the limit
>member otherwise, but trying to not initialize it when it can be e.g.
>copied around and then invoke UB doesn't look like a good idea.
>
>Bootstrapped/regtested on x86_64-linux and i686-linux, though I don't
>have
>riscv64 access to verify if it fixes the reported warning.  Ok for
>trunk?

Ok. 

Richard. 
>
>2021-04-10  Jakub Jelinek  <jakub@redhat.com>
>
>	PR middle-end/99989
>	* gimple-ssa-warn-alloca.c
>	(alloca_type_and_limit::alloca_type_and_limit): Initialize limit to
>	0 with integer precision unconditionally.
>
>--- gcc/gimple-ssa-warn-alloca.c.jj	2021-01-04 10:25:38.892233156 +0100
>+++ gcc/gimple-ssa-warn-alloca.c	2021-04-09 12:46:27.466847728 +0200
>@@ -124,9 +124,8 @@ public:
>   alloca_type_and_limit (enum alloca_type type,
> 			 wide_int i) : type(type), limit(i) { }
>   alloca_type_and_limit (enum alloca_type type) : type(type)
>-  { if (type == ALLOCA_BOUND_MAYBE_LARGE
>-	|| type == ALLOCA_BOUND_DEFINITELY_LARGE)
>-      limit = wi::to_wide (integer_zero_node);
>+  {
>+    limit = wi::to_wide (integer_zero_node);
>   }
> };
> 
>
>	Jakub
diff mbox series

Patch

--- gcc/gimple-ssa-warn-alloca.c.jj	2021-01-04 10:25:38.892233156 +0100
+++ gcc/gimple-ssa-warn-alloca.c	2021-04-09 12:46:27.466847728 +0200
@@ -124,9 +124,8 @@  public:
   alloca_type_and_limit (enum alloca_type type,
 			 wide_int i) : type(type), limit(i) { }
   alloca_type_and_limit (enum alloca_type type) : type(type)
-  { if (type == ALLOCA_BOUND_MAYBE_LARGE
-	|| type == ALLOCA_BOUND_DEFINITELY_LARGE)
-      limit = wi::to_wide (integer_zero_node);
+  {
+    limit = wi::to_wide (integer_zero_node);
   }
 };