diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-08-22 17:00:06 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-08-22 17:00:06 +0200 |
commit | e4269c7843070aa3ebc7c9e2e81c2e8a8d941c50 (patch) | |
tree | 08080223cc398647487dd024de0b654081310a32 /gcc | |
parent | 7d7212ec2b45c2829dba3bd3319fce109cbe7f01 (diff) | |
download | gcc-e4269c7843070aa3ebc7c9e2e81c2e8a8d941c50.zip gcc-e4269c7843070aa3ebc7c9e2e81c2e8a8d941c50.tar.gz gcc-e4269c7843070aa3ebc7c9e2e81c2e8a8d941c50.tar.bz2 |
re PR middle-end/50141 (ICE: tree check: expected var_decl, have parm_decl in get_bit_range, at expr.c:4357 with --param allow-store-data-races=0 and bitfields)
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.
From-SVN: r177957
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/expr.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cxxbitfields-6.c | 17 |
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15c4e3b..14ab859 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. + 2011-08-22 Kirill Yukhin <kirill.yukhin@intel.com> * config/i386/avx2intrin.h: New file. @@ -4354,7 +4354,8 @@ get_bit_range (unsigned HOST_WIDE_INT *bitstart, || 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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f7df8c1..72feb20 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-08-22 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/50141 + * c-c++-common/cxxbitfields-6.c: New test. + 2011-08-22 Mikael Morin <mikael.morin@gcc.gnu.org> PR fortran/50050 diff --git a/gcc/testsuite/c-c++-common/cxxbitfields-6.c b/gcc/testsuite/c-c++-common/cxxbitfields-6.c new file mode 100644 index 0000000..bdd6294 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cxxbitfields-6.c @@ -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); +} |