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 ICEs in get_bit_range (PR middle-end/50141)


On Mon, Aug 22, 2011 at 4:18 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> DECL_THREAD_LOCAL_P may be used only on VAR_DECLs, not other decls
> like PARM_DECL, RESULT_DECL etc.
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
> ok for trunk?

Ok.

Thanks,
Richard.

> 2011-08-22 ?Jakub Jelinek ?<jakub@redhat.com>
>
> ? ? ? ?PR middle-end/50141
> ? ? ? ?* expr.c (get_bit_range): Only use DECL_THREAD_LOCAL_P if
> ? ? ? ?innerdecl is a VAR_DECL.
>
> ? ? ? ?* c-c++-common/cxxbitfields-6.c: New test.
>
> --- gcc/expr.c.jj ? ? ? 2011-08-22 08:17:07.000000000 +0200
> +++ gcc/expr.c ?2011-08-22 10:06:26.000000000 +0200
> @@ -4354,7 +4354,8 @@ get_bit_range (unsigned HOST_WIDE_INT *b
> ? ? ? ? ? || TREE_CODE (innerdecl) == TARGET_MEM_REF)
> ? ? ? ? ?&& !ptr_deref_may_alias_global_p (TREE_OPERAND (innerdecl, 0)))
> ? ? ? || (DECL_P (innerdecl)
> - ? ? ? ? && (DECL_THREAD_LOCAL_P (innerdecl)
> + ? ? ? ? && ((TREE_CODE (innerdecl) == VAR_DECL
> + ? ? ? ? ? ? ?&& DECL_THREAD_LOCAL_P (innerdecl))
> ? ? ? ? ? ? ?|| !TREE_STATIC (innerdecl))))
> ? ? {
> ? ? ? *bitstart = *bitend = 0;
> --- gcc/testsuite/c-c++-common/cxxbitfields-6.c.jj ? ? ?2011-08-22 10:11:34.000000000 +0200
> +++ gcc/testsuite/c-c++-common/cxxbitfields-6.c 2011-08-22 10:11:59.000000000 +0200
> @@ -0,0 +1,17 @@
> +/* PR middle-end/50141 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 --param allow-store-data-races=0" } */
> +
> +struct S
> +{
> + ?int i:8;
> +};
> +
> +void bar (struct S, int);
> +
> +void
> +foo (struct S s, int i)
> +{
> + ?s.i = i;
> + ?bar (s, i);
> +}
>
> ? ? ? ?Jakub
>


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