diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2011-08-06 14:36:52 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2011-08-06 07:36:52 -0700 |
commit | 7ac1b8a01eb777ddc4e7985a7b68523a6fb5d824 (patch) | |
tree | 9f0776759b0bbc7dc7ffe4e723a2fe35b151f332 /gcc | |
parent | 08094409cac5ff1841b0b89805ed20348923073e (diff) | |
download | gcc-7ac1b8a01eb777ddc4e7985a7b68523a6fb5d824.zip gcc-7ac1b8a01eb777ddc4e7985a7b68523a6fb5d824.tar.gz gcc-7ac1b8a01eb777ddc4e7985a7b68523a6fb5d824.tar.bz2 |
Add testcases for PRs 47449/47446.
2011-08-06 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47449
* gcc.target/i386/pr47449.c: New.
PR target/47446
* gcc.dg/pr47446-1.c: New.
* gcc.dg/pr47446-2.c: Likewise.
From-SVN: r177512
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47446-1.c | 40 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47446-2.c | 41 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr47449.c | 12 |
4 files changed, 102 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 68d470a..ecdd2d2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,14 @@ 2011-08-06 H.J. Lu <hongjiu.lu@intel.com> + PR middle-end/47449 + * gcc.target/i386/pr47449.c: New. + + PR target/47446 + * gcc.dg/pr47446-1.c: New. + * gcc.dg/pr47446-2.c: Likewise. + +2011-08-06 H.J. Lu <hongjiu.lu@intel.com> + PR target/47766 * gcc.dg/pr47766.c: New. diff --git a/gcc/testsuite/gcc.dg/pr47446-1.c b/gcc/testsuite/gcc.dg/pr47446-1.c new file mode 100644 index 0000000..38c9594 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47446-1.c @@ -0,0 +1,40 @@ +/* { dg-do assemble } */ +/* { dg-options "-O2" } */ + +extern void abort (void); +enum +{ + __GCONV_OK = 0, + __GCONV_NOCONV, + __GCONV_NODB, + __GCONV_NOMEM, + __GCONV_EMPTY_INPUT, + __GCONV_FULL_OUTPUT, + __GCONV_ILLEGAL_INPUT, + __GCONV_INCOMPLETE_INPUT, + __GCONV_ILLEGAL_DESCRIPTOR, + __GCONV_INTERNAL_ERROR +}; +int +foo (int result) +{ + int irreversible = 0; + switch (result) + { + case __GCONV_ILLEGAL_INPUT: + irreversible = -1L; + break; + case __GCONV_FULL_OUTPUT: + irreversible = -2L; + break; + case __GCONV_INCOMPLETE_INPUT: + irreversible = -3L; + break; + case __GCONV_EMPTY_INPUT: + case __GCONV_OK: + break; + default: + abort (); + } + return irreversible; +} diff --git a/gcc/testsuite/gcc.dg/pr47446-2.c b/gcc/testsuite/gcc.dg/pr47446-2.c new file mode 100644 index 0000000..5410c7f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47446-2.c @@ -0,0 +1,41 @@ +/* { dg-do assemble } */ +/* { dg-require-effective-target fpic } */ +/* { dg-options "-O2 -fpic" } */ + +extern void abort (void); +enum +{ + __GCONV_OK = 0, + __GCONV_NOCONV, + __GCONV_NODB, + __GCONV_NOMEM, + __GCONV_EMPTY_INPUT, + __GCONV_FULL_OUTPUT, + __GCONV_ILLEGAL_INPUT, + __GCONV_INCOMPLETE_INPUT, + __GCONV_ILLEGAL_DESCRIPTOR, + __GCONV_INTERNAL_ERROR +}; +int +foo (int result) +{ + int irreversible = 0; + switch (result) + { + case __GCONV_ILLEGAL_INPUT: + irreversible = -1L; + break; + case __GCONV_FULL_OUTPUT: + irreversible = -2L; + break; + case __GCONV_INCOMPLETE_INPUT: + irreversible = -3L; + break; + case __GCONV_EMPTY_INPUT: + case __GCONV_OK: + break; + default: + abort (); + } + return irreversible; +} diff --git a/gcc/testsuite/gcc.target/i386/pr47449.c b/gcc/testsuite/gcc.target/i386/pr47449.c new file mode 100644 index 0000000..99ef32f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr47449.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +void bar (void *, void *); +int +foo (void *p1, void *p2) +{ + int ret1, ret2; + __asm ("" : "=D" (ret1), "=S" (ret2)); + bar (p1, p2); + return ret1 + ret2; +} |