From 0819ccfbb0014a31e28952a32314c73a607fd413 Mon Sep 17 00:00:00 2001
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 28 Jun 1999 07:24:42 +0000
Subject: [PATCH] Opps.  Wrong file the first time.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27813 138bc75d-0d04-0410-961f-82ee72b054a4
---
 .../gcc.c-torture/execute/990628-1.c          | 68 +++++++++++++------
 1 file changed, 46 insertions(+), 22 deletions(-)

diff --git a/gcc/testsuite/gcc.c-torture/execute/990628-1.c b/gcc/testsuite/gcc.c-torture/execute/990628-1.c
index d2ef6108b10d..3b1342f29b54 100644
--- a/gcc/testsuite/gcc.c-torture/execute/990628-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/990628-1.c
@@ -1,30 +1,54 @@
-#define TP_BSIZE 64
+#include <stdlib.h>
 
-char	buf[2*TP_BSIZE];
-char	(*nextblock)[TP_BSIZE] = (char (*)[TP_BSIZE]) buf;
+struct {
+    long sqlcode;
+} sqlca;
 
-union u_test {
-	char dummy[TP_BSIZE];
-	struct s_test {
-		int a;
-		int b;
-		int c;
-	} s_test;
-};
 
-main(int argc, char **argv)
+struct data_record {
+    int dummy;
+    int a[100];
+} *data_ptr, data_tmp;
+
+
+int
+num_records()
 {
-	int i;
-	char dp[TP_BSIZE];
+    return 1;
+}
+
 
-	for (i = 0; i < 2*TP_BSIZE; i++)
-		buf[i] = '.';
-	for (i = 0; i < TP_BSIZE; i++)
-		dp[i] = 'a';
+void
+fetch()
+{
+    static int fetch_count;
+
+    memset(&data_tmp, 0x55, sizeof(data_tmp));
+    sqlca.sqlcode = (++fetch_count > 1 ? 100 : 0);
+}
 
-	*(union u_test *)(*(nextblock)++) = *(union u_test *)dp;
 
-	for (i = 0; i < 2*TP_BSIZE; i++)
-		printf("%c%s", buf[i], (i % 64) == 63 ? "\n" : "");
-	exit(0);
+void
+load_data() {
+    struct data_record *p;
+    int num = num_records();
+
+    data_ptr = malloc(num * sizeof(struct data_record));
+    memset(data_ptr, 0xaa, num * sizeof(struct data_record));
+
+    fetch();
+    p = data_ptr;
+    while (sqlca.sqlcode == 0) {
+        *p++ = data_tmp;
+        fetch();
+    }
+}
+
+
+main()
+{
+    load_data();
+    if (data_ptr[0].dummy != 0x55555555)
+      abort ();
+    exit (0);
 }
-- 
GitLab