diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 432c67e2a70..7842f6326e8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2004-12-02 Nick Clifton + + * gcc.target/xstormy16: New test directory. + * gcc.target/xstormy16/xstormy16.exp: Run the new tests. + * gcc.target/xstormy16/bp.c: Check the generation of bp + instructions. + * gcc.target/xstormy16/below_100.c: Check the generation of bp and + bn instructions and the BELOW100 attribute. + 2004-12-02 Alan Modra PR target/16952 diff --git a/gcc/testsuite/gcc.target/xstormy16/below_100.c b/gcc/testsuite/gcc.target/xstormy16/below_100.c new file mode 100644 index 00000000000..dfa7e3bc92b --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/below_100.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler "bn " } } */ +/* { dg-final { scan-assembler "bp " } } */ + +unsigned short a_below __attribute__((__BELOW100__)); +unsigned short b_below __attribute__((__BELOW100__)); +unsigned short * a_ptr = & a_below; +unsigned short * b_ptr = & b_below; + +char * +foo (void) +{ + if (a_below & 0x0100) + { + if (b_below & 0x0100) + return "Fail"; + return "Success"; + } + + return "Fail"; +} + +char * +bar (void) +{ + *a_ptr = 0x0100; + *b_ptr = 0xfeff; + return foo (); +} diff --git a/gcc/testsuite/gcc.target/xstormy16/bp.c b/gcc/testsuite/gcc.target/xstormy16/bp.c new file mode 100644 index 00000000000..5cab932d3db --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/bp.c @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler "bp " } } */ + +#define a_val (*((volatile unsigned char *) 0x7f14)) +#define b_val (*((volatile unsigned char *) 0x7f10)) + +unsigned char * a_ptr = (unsigned char *) 0x7f14; +unsigned char * b_ptr = (unsigned char *) 0x7f10; + +int +foo (void) +{ + if (a_val & 0x08) + { + if (b_val & 0x08) + return -1; + + return 0; + } + + return -1; +} + +int +bar (void) +{ + *a_ptr = 0x08; + *b_ptr = 0xf7; + + return foo (); +} + + diff --git a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp new file mode 100644 index 00000000000..2961cf1b881 --- /dev/null +++ b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp @@ -0,0 +1,23 @@ +# Tests for the xstormy16 + +if {![istarget xstormy16-*-*]} { + return 0 +} + +load_lib gcc-dg.exp + +# If a testcase doesn't have special options, use these. +global DEFAULT_CFLAGS +if ![info exists DEFAULT_CFLAGS] then { + set DEFAULT_CFLAGS " -ansi -pedantic-errors" +} + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ + "" $DEFAULT_CFLAGS + +# All done. +dg-finish