summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/920501-4.c
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.c-torture/compile/920501-4.c
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/920501-4.c')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920501-4.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-4.c b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
new file mode 100644
index 000000000..3481deefe
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-4.c
@@ -0,0 +1,54 @@
+/* This test fails on HC11/HC12 when it is compiled without -mshort because
+ the 'r0' array is too large. Force to use 16-bit ints for it. */
+/* { dg-do assemble } */
+/* { dg-xfail-if "" { m6811-*-* m6812-*-* } { "*" } { "-mshort" } } */
+
+foo ()
+{
+ int r0[8186 ];
+ int r1[2 ];
+ int r2[2 ];
+ int bitm0[2 ];
+ int bitm1[2 ];
+ int bitm2[2 ];
+
+ int i,j,k,m,n,m_max;
+ int f;
+ double fm,ft;
+
+ while (1) {
+
+ if (m%4 == 2)
+ ++m;
+
+ if (m_max != 0 && m > m_max)
+ break;
+
+ fm=m;
+
+ r0[k=1]=0;
+ bitm0[0] = 0;
+
+ while ( n%f == 0 ) {
+ while ( (ft != 0) && (ft < fm )) {
+ bitm1[i] = 0;
+ r1[i]=0;
+ }
+
+ while ( r0[i] != 0 && r1[i] != 0 ) {
+ if ( r0[i] < r1[i] ) {
+ bitm2[k] = bitm0[i];
+ r2[k++]=0;
+ }
+ else if ( r0[i] > r1[j] ) {
+ bitm2[k] = bitm1[j];
+ r2[k++]=r1[j++];
+ }
+ else {
+ bitm1[k] = bitm0[i];
+ r2[k++]=r0[i++];
+ }
+ }
+ }
+ }
+}