RFC: Some more store.exp failures - tweak the test

Daniel Jacobowitz
2003-07-01T21:55:43Z

This patch fixes the store.exp failures for ARM. Two changes:
- Change char to signed char, because some patterns match -1. If anyone
prefers changing the patterns to match 255 would work too.
- Change "return l" to "return l + r". "up; print r" doesn't work if
"r" is not live across the function call; even without optimization
GCC will re-use the register. Then we lose.

I believe these changes don't impact the point of the test. If nobody
disagrees with me, I'd like to commit this.

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer

2003-07-01 Daniel Jacobowitz <drow@mvista.com>

* gdb.base/store.c (wack_char): Make l and r signed characters.
Return l + r to keep r live across the call.
(wack_short, wack_int, wack_long, wack_longest, wack_float)
(wack_double, wack_doublest): Return l + r to keep r live across
the call.
* gdb.base/store.exp: Accomodate store.c changes.

Index: gdb/testsuite/gdb.base/store.c
===================================================================
--- gdb.orig/testsuite/gdb.base/store.c 2003-06-14 18:10:47.000000000 -0400
+++ gdb/testsuite/gdb.base/store.c 2003-07-01 17:05:58.000000000 -0400
@@ -64,9 +64,9 @@ add_doublest (register doublest u, regis
char
wack_char (register char u, register char v)
{
- register char l = u, r = v;
+ register signed char l = u, r = v;
l = add_char (l, r);
- return l;
+ return l + r;
}

short
@@ -74,7 +74,7 @@ wack_short (register short u, register s
{
register short l = u, r = v;
l = add_short (l, r);
- return l;
+ return l + r;
}

int
@@ -82,7 +82,7 @@ wack_int (register int u, register int v
{
register int l = u, r = v;
l = add_int (l, r);
- return l;
+ return l + r;
}

long
@@ -90,7 +90,7 @@ wack_long (register long u, register lon
{
register long l = u, r = v;
l = add_long (l, r);
- return l;
+ return l + r;
}

long
@@ -98,7 +98,7 @@ wack_longest (register longest u, regist
{
register longest l = u, r = v;
l = add_longest (l, r);
- return l;
+ return l + r;
}

float
@@ -106,7 +106,7 @@ wack_float (register float u, register f
{
register float l = u, r = v;
l = add_float (l, r);
- return l;
+ return l + r;
}

double
@@ -114,7 +114,7 @@ wack_double (register double u, register
{
register double l = u, r = v;
l = add_double (l, r);
- return l;
+ return l + r;
}

doublest
@@ -122,7 +122,7 @@ wack_doublest (register doublest u, regi
{
register doublest l = u, r = v;
l = add_doublest (l, r);
- return l;
+ return l + r;
}

/* */
Index: gdb/testsuite/gdb.base/store.exp
===================================================================
--- gdb.orig/testsuite/gdb.base/store.exp 2003-06-14 18:10:47.000000000 -0400
+++ gdb/testsuite/gdb.base/store.exp 2003-07-01 17:06:52.000000000 -0400
@@ -57,13 +57,13 @@ if ![runto_main] then {
proc check_set { t l r new add } {
global gdb_prompt
gdb_test "tbreak wack_${t}"
- gdb_test "continue" "register ${t} l = u, r = v;" "continue to wack_${t}"
+ gdb_test "continue" "register (signed )?${t} l = u, r = v;" "continue to wack_${t}"
gdb_test "next" "l = add_${t} .l, r.;" "next ${t}"
gdb_test "print l" " = ${l}" "print old l - ${t}"
gdb_test "print r" " = ${r}" "print old r - ${t}"
gdb_test "set variable l = 4"
gdb_test "print l" " = ${new}" "print new l - ${t}"
- gdb_test "next" "return l;"
+ gdb_test "next" "return l \\+ r;"
gdb_test "print l" " = ${add}" "print add - ${t}"
}