diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-21 09:27:28 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-21 09:27:28 +0000 |
commit | 50b9247783a3221fb85dbd26eebb4931cbd236ea (patch) | |
tree | f18ad8b89d42f726121078f6b2686d5bcf5e3058 | |
parent | adb5a71c406ae11b3e989789d4f00fd4e68b09eb (diff) | |
download | gcc-50b9247783a3221fb85dbd26eebb4931cbd236ea.tar.gz |
PR target/48213
* config/s390/s390.c (s390_delegitimize_address): Don't call
lowpart_subreg if orig_x has BLKmode.
* gcc.dg/pr48213.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171212 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr48213.c | 14 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 662284286ef..dc04b8f1e7f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-21 Jakub Jelinek <jakub@redhat.com> + + PR target/48213 + * config/s390/s390.c (s390_delegitimize_address): Don't call + lowpart_subreg if orig_x has BLKmode. + 2011-03-20 Joseph Myers <joseph@codesourcery.com> * c-decl.c (diagnose_mismatched_decls): Give an error for diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 4a056d5863a..5165e877adc 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -5045,6 +5045,8 @@ s390_delegitimize_address (rtx orig_x) if (GET_MODE (orig_x) != Pmode) { + if (GET_MODE (orig_x) == BLKmode) + return orig_x; y = lowpart_subreg (GET_MODE (orig_x), y, Pmode); if (y == NULL_RTX) return orig_x; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c653cc0619d..f5b04535711 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-21 Jakub Jelinek <jakub@redhat.com> + + PR target/48213 + * gcc.dg/pr48213.c: New test. + 2011-03-20 Joseph Myers <joseph@codesourcery.com> * gcc.dg/c1x-typedef-1.c: Expect errors for redefinitions of diff --git a/gcc/testsuite/gcc.dg/pr48213.c b/gcc/testsuite/gcc.dg/pr48213.c new file mode 100644 index 00000000000..cf7d76fa0ea --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr48213.c @@ -0,0 +1,14 @@ +/* PR target/48213 */ +/* { dg-do compile } */ +/* { dg-options "-g -O2" } */ +/* { dg-options "-g -O2 -fpic" { target fpic } } */ + +struct S { int (*s) (void); }; +int bar (void); + +void +foo (struct S *x) +{ + if (x->s != bar) + bar (); +} |