diff mbox

[SH] Fix target/48596

Message ID 1330988350.2929.276.camel@yam-132-YW-E178-FTW
State New
Headers show

Commit Message

Oleg Endo March 5, 2012, 10:59 p.m. UTC
On Thu, 2012-03-01 at 13:11 +0900, Kaz Kojima wrote:
> Hi,
> 
> The attached patch is to avoid PR target/48596 which is a 4.7
> regression on SH.  
> [...]

I'd like to add the test case from the PR to the testsuite.

Tested with
make check-gcc RUNTESTFLAGS="sh.exp=pr48596.c --target_board=sh-sim
\{-m2/-ml,-m2/-mb,-m2a-single/-mb,
-m4-single/-ml,-m4-single/-mb,-m4a-single/-ml,-m4a-single/-mb}"

OK?

Cheers,
Oleg

testsuite/ChangeLog:

	PR target/48596
	* gcc.target/sh/pr48596.c: New.

Comments

Kaz Kojima March 5, 2012, 11:24 p.m. UTC | #1
Oleg Endo <oleg.endo@t-online.de> wrote:
> I'd like to add the test case from the PR to the testsuite.
> 
> Tested with
> make check-gcc RUNTESTFLAGS="sh.exp=pr48596.c --target_board=sh-sim
> \{-m2/-ml,-m2/-mb,-m2a-single/-mb,
> -m4-single/-ml,-m4-single/-mb,-m4a-single/-ml,-m4a-single/-mb}"
> 
> OK?

A gcc.c-torture/compile test is better, isn't it?

Regards,
	kaz
diff mbox

Patch

Index: gcc/testsuite/gcc.target/sh/pr48596.c
===================================================================
--- gcc/testsuite/gcc.target/sh/pr48596.c	(revision 0)
+++ gcc/testsuite/gcc.target/sh/pr48596.c	(revision 0)
@@ -0,0 +1,31 @@ 
+/* Check that the following code compiles without errors.  */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+
+enum { nrrdCenterUnknown, nrrdCenterNode, nrrdCenterCell, nrrdCenterLast };
+typedef struct { int size; int center; }  NrrdAxis;
+typedef struct { int dim; NrrdAxis axis[10]; } Nrrd;
+typedef struct { } NrrdKernel;
+typedef struct { const NrrdKernel *kernel[10]; int samples[10]; } Info;
+
+void
+foo (Nrrd *nout, Nrrd *nin, const NrrdKernel *kernel, const double *parm,
+     const int *samples, const double *scalings)
+{
+  Info *info;
+  int d, p, np, center;
+  for (d=0; d<nin->dim; d++)
+    {
+      info->kernel[d] = kernel;
+      if (samples)
+	info->samples[d] = samples[d];
+      else
+	{
+	  center = _nrrdCenter(nin->axis[d].center);
+	  if (nrrdCenterCell == center)
+	    info->samples[d] = nin->axis[d].size*scalings[d];
+	  else
+	    info->samples[d] = (nin->axis[d].size - 1)*scalings[d] + 1;
+	}
+    }
+}