diff options
author | Steve Ellcey <sellcey@imgtec.com> | 2016-01-28 22:28:04 +0000 |
---|---|---|
committer | Steve Ellcey <sje@gcc.gnu.org> | 2016-01-28 22:28:04 +0000 |
commit | df113ce7de77eba567568d47c0d0e3d5ebd98559 (patch) | |
tree | 45a96d2b1ef9bb42ed5100c1351e5014dd1bd134 | |
parent | 0b16c7b99c6cc212135d6dba70bbc5ef47af4dbe (diff) | |
download | gcc-df113ce7de77eba567568d47c0d0e3d5ebd98559.zip gcc-df113ce7de77eba567568d47c0d0e3d5ebd98559.tar.gz gcc-df113ce7de77eba567568d47c0d0e3d5ebd98559.tar.bz2 |
re PR target/68400 (ICE in change_address_1, at emit-rtl.c:2125)
PR target/68400
* gcc.target/mips/mips.exp (mips_option_groups): Add stack-protector.
* gcc.target/mips/pr68400.c: New test.
From-SVN: r232954
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/mips.exp | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/mips/pr68400.c | 28 |
3 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0957d2f..fc1e4ee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-01-28 Steve Ellcey <sellcey@imgtec.com> + + PR target/68400 + * gcc.target/mips/mips.exp (mips_option_groups): Add stack-protector. + * gcc.target/mips/pr68400.c: New test. + 2016-01-28 Martin Sebor <msebor@redhat.com> PR target/17381 diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp index f191331..ff9c99a 100644 --- a/gcc/testsuite/gcc.target/mips/mips.exp +++ b/gcc/testsuite/gcc.target/mips/mips.exp @@ -257,6 +257,7 @@ set mips_option_groups { lsa "(|!)HAS_LSA" section_start "-Wl,--section-start=.*" frame-header "-mframe-header-opt|-mno-frame-header-opt" + stack-protector "-fstack-protector" } for { set option 0 } { $option < 32 } { incr option } { diff --git a/gcc/testsuite/gcc.target/mips/pr68400.c b/gcc/testsuite/gcc.target/mips/pr68400.c new file mode 100644 index 0000000..1099568 --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/pr68400.c @@ -0,0 +1,28 @@ +/* PR target/pr68400 + This was triggering an ICE in change_address_1 when compiled with -Os. */ + +/* { dg-do compile } */ +/* { dg-options "-fstack-protector -mips16" } */ + +typedef struct s { + unsigned long long d; + long long t; +} p; + +int sh(int x, unsigned char *buf) +{ + p *uhdr = (p *)buf; + unsigned int i = 0; + uhdr->d = ((uhdr->d & 0xff00000000000000LL) >> 56) + | ((uhdr->d & 0x0000ff0000000000LL) >> 24) + | ((uhdr->d & 0x00000000ff000000LL) << 8) + | ((uhdr->d & 0x00000000000000ffLL) << 56); + uhdr->t = ((uhdr->t & 0xff00000000000000LL) >> 56) + | ((uhdr->t & 0x0000ff0000000000LL) >> 24) + | ((uhdr->t & 0x000000ff00000000LL) >> 8) + | ((uhdr->t & 0x00000000ff000000LL) << 8) + | ((uhdr->t & 0x000000000000ff00LL) << 40) + | ((uhdr->t & 0x00000000000000ffLL) << 56); + i += 4; + if (x < i) return 0; else return 1; +} |