Fix some testcases for nds32 target and provide new nds32 target specific tests.
gcc/testsuite/ * gcc.dg/20020312-2.c: Add __nds32__ case. * gcc.dg/builtin-apply2.c: Skip for nds32*-*-*. * gcc.dg/sibcall-3.c: Expected fail for nds32*-*-*. * gcc.dg/sibcall-4.c: Expected fail for nds32*-*-*. * gcc.dg/stack-usage-1.c (SIZE): Define case for __nds32__. * gcc.dg/torture/pr37868.c: Skip for nds32*-*-*. * gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for nds32*-*-*. * gcc.dg/tree-ssa/20040204-1.c: Expected fail for nds32*-*-*. * gcc.dg/tree-ssa/pr42585.c: Skip for nds32*-*-*. * gcc.dg/tree-ssa/sra-12.c: Skip for nds32*-*-*. * gcc.target/nds32: New nds32 specific directory and testcases. * lib/target-supports.exp (check_profiling_available): Check for nds32*-*-elf. From-SVN: r205625
This commit is contained in:
parent
fb5a6c6939
commit
199f847c98
|
@ -1,3 +1,19 @@
|
|||
2013-12-03 Chung-Ju Wu <jasonwucj@gmail.com>
|
||||
|
||||
* gcc.dg/20020312-2.c: Add __nds32__ case.
|
||||
* gcc.dg/builtin-apply2.c: Skip for nds32*-*-*.
|
||||
* gcc.dg/sibcall-3.c: Expected fail for nds32*-*-*.
|
||||
* gcc.dg/sibcall-4.c: Expected fail for nds32*-*-*.
|
||||
* gcc.dg/stack-usage-1.c (SIZE): Define case for __nds32__.
|
||||
* gcc.dg/torture/pr37868.c: Skip for nds32*-*-*.
|
||||
* gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for nds32*-*-*.
|
||||
* gcc.dg/tree-ssa/20040204-1.c: Expected fail for nds32*-*-*.
|
||||
* gcc.dg/tree-ssa/pr42585.c: Skip for nds32*-*-*.
|
||||
* gcc.dg/tree-ssa/sra-12.c: Skip for nds32*-*-*.
|
||||
* gcc.target/nds32: New nds32 specific directory and testcases.
|
||||
* lib/target-supports.exp (check_profiling_available): Check for
|
||||
nds32*-*-elf.
|
||||
|
||||
2013-12-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/59362
|
||||
|
|
|
@ -52,6 +52,8 @@ extern void abort (void);
|
|||
/* No pic register. */
|
||||
#elif defined(__moxie__)
|
||||
/* No pic register. */
|
||||
#elif defined(__nds32__)
|
||||
/* No pic register. */
|
||||
#elif defined(__hppa__)
|
||||
/* PIC register is %r27 or %r19, but is used even without -fpic. */
|
||||
#elif defined(__pdp11__)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* { dg-do run } */
|
||||
/* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
|
||||
/* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* nds32*-*-*" } { "*" } { "" } } */
|
||||
/* { dg-skip-if "Variadic funcs use Base AAPCS. Normal funcs use VFP variant." { arm*-*-* && arm_hf_eabi } { "*" } { "" } } */
|
||||
|
||||
/* PR target/12503 */
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
Copyright (C) 2002 Free Software Foundation Inc.
|
||||
Contributed by Hans-Peter Nilsson <hp@bitrange.com> */
|
||||
|
||||
/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
|
||||
/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* nds32*-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
|
||||
/* -mlongcall disables sibcall patterns. */
|
||||
/* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
|
||||
/* { dg-options "-O2 -foptimize-sibling-calls" } */
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
Copyright (C) 2002 Free Software Foundation Inc.
|
||||
Contributed by Hans-Peter Nilsson <hp@bitrange.com> */
|
||||
|
||||
/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
|
||||
/* { dg-do run { xfail { { cris-*-* crisv32-*-* h8300-*-* hppa*64*-*-* m32r-*-* mcore-*-* mn10300-*-* nds32*-*-* xstormy16-*-* v850*-*-* vax-*-* xtensa*-*-* } || { arm*-*-* && { ! arm32 } } } } } */
|
||||
/* -mlongcall disables sibcall patterns. */
|
||||
/* { dg-skip-if "" { powerpc*-*-* } { "-mlongcall" } { "" } } */
|
||||
/* { dg-options "-O2 -foptimize-sibling-calls" } */
|
||||
|
|
|
@ -38,6 +38,9 @@
|
|||
# else
|
||||
# define SIZE 248
|
||||
# endif
|
||||
#elif defined (__nds32__)
|
||||
# define SIZE 248 /* 256 - 8 bytes, only $fp and padding bytes are saved in
|
||||
the register save area under O0 optimization level. */
|
||||
#elif defined (__powerpc64__) || defined (__ppc64__) || defined (__POWERPC64__) \
|
||||
|| defined (__PPC64__)
|
||||
# if _CALL_ELF == 2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* { dg-do run } */
|
||||
/* { dg-options "-fno-strict-aliasing" } */
|
||||
/* { dg-skip-if "unaligned access" { arc*-*-* epiphany-*-* sparc*-*-* sh*-*-* tic6x-*-* } "*" "" } */
|
||||
/* { dg-skip-if "unaligned access" { arc*-*-* epiphany-*-* nds32*-*-* sparc*-*-* sh*-*-* tic6x-*-* } "*" "" } */
|
||||
|
||||
extern void abort (void);
|
||||
#if (__SIZEOF_INT__ <= 2)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
avr: Variadic funcs don't pass arguments in registers, while normal funcs
|
||||
do. */
|
||||
/* { dg-skip-if "Variadic funcs use different argument passing from normal funcs" { arm_hf_eabi || { avr-*-* } } "*" "" } */
|
||||
/* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { nds32*-*-* } "*" "" } */
|
||||
|
||||
|
||||
#define INTEGER_ARG 5
|
||||
|
|
|
@ -33,5 +33,5 @@ void test55 (int x, int y)
|
|||
that the && should be emitted (based on BRANCH_COST). Fix this
|
||||
by teaching dom to look through && and register all components
|
||||
as true. */
|
||||
/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* nds32*-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "optimized" } } */
|
||||
|
|
|
@ -35,6 +35,6 @@ Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
|
|||
/* Whether the structs are totally scalarized or not depends on the
|
||||
MOVE_RATIO macro definition in the back end. The scalarization will
|
||||
not take place when using small values for MOVE_RATIO. */
|
||||
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "arm*-*-* avr-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "arm*-*-* avr-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "optimized" } } */
|
||||
|
|
|
@ -21,5 +21,5 @@ int foo (struct S *p)
|
|||
*p = l;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "l;" 0 "release_ssa" { target { ! "avr*-*-*" } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "l;" 0 "release_ssa" { target { ! "avr*-*-* nds32*-*-*" } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "release_ssa" } } */
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/* This is a basic main function test program. */
|
||||
|
||||
/* { dg-do run } */
|
||||
/* { dg-options "-O0" } */
|
||||
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
/* Verify that we generate isb instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tisb" } } */
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
__builtin_nds32_isb ();
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
/* Verify that we generate isync instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tisync" } } */
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
int *addr = (int *) 0x53000000;
|
||||
__builtin_nds32_isync (addr);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/* Verify that we generate mfsr/mtsr instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tmfsr" } } */
|
||||
/* { dg-final { scan-assembler "\\tmtsr" } } */
|
||||
|
||||
#include <nds32_intrinsic.h>
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
int ipsw_value;
|
||||
|
||||
ipsw_value = __builtin_nds32_mfsr (__NDS32_REG_IPSW__);
|
||||
__builtin_nds32_mtsr (ipsw_value, __NDS32_REG_IPSW__);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/* Verify that we generate mfusr/mtusr instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tmfusr" } } */
|
||||
/* { dg-final { scan-assembler "\\tmtusr" } } */
|
||||
|
||||
#include <nds32_intrinsic.h>
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
int itype_value;
|
||||
|
||||
itype_value = __builtin_nds32_mfusr (__NDS32_REG_ITYPE__);
|
||||
__builtin_nds32_mtusr (itype_value, __NDS32_REG_ITYPE__);
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
/* Verify that we generate setgie.d instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tsetgie.d" } } */
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
__builtin_nds32_setgie_dis ();
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
/* Verify that we generate setgie.e instruction with builtin function. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0" } */
|
||||
/* { dg-final { scan-assembler "\\tsetgie.e" } } */
|
||||
|
||||
void
|
||||
test (void)
|
||||
{
|
||||
__builtin_nds32_setgie_en ();
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
# Target test cases of Andes NDS32 cpu for GNU compiler
|
||||
# Copyright (C) 2012-2013 Free Software Foundation, Inc.
|
||||
# Contributed by Andes Technology Corporation.
|
||||
#
|
||||
# This file is part of GCC.
|
||||
#
|
||||
# GCC is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published
|
||||
# by the Free Software Foundation; either version 3, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# GCC is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
# License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
# GCC testsuite that uses the `dg.exp' driver.
|
||||
|
||||
# Exit immediately if this isn't a nds32 target.
|
||||
if ![istarget nds32*-*-*] then {
|
||||
return
|
||||
}
|
||||
|
||||
# Load support procs.
|
||||
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
|
|
@ -530,6 +530,7 @@ proc check_profiling_available { test_what } {
|
|||
|| [istarget mn10300-*-elf*]
|
||||
|| [istarget moxie-*-elf*]
|
||||
|| [istarget msp430-*-*]
|
||||
|| [istarget nds32*-*-elf]
|
||||
|| [istarget picochip-*-*]
|
||||
|| [istarget powerpc-*-eabi*]
|
||||
|| [istarget powerpc-*-elf]
|
||||
|
|
Loading…
Reference in New Issue