Initial revision
authorDoug Evans <dje@gnu.org>
Wed, 15 Mar 1995 23:42:55 +0000 (23:42 +0000)
committerDoug Evans <dje@gnu.org>
Wed, 15 Mar 1995 23:42:55 +0000 (23:42 +0000)
From-SVN: r9187

gcc/libgcc1-test.c [new file with mode: 0644]

diff --git a/gcc/libgcc1-test.c b/gcc/libgcc1-test.c
new file mode 100644 (file)
index 0000000..43250a9
--- /dev/null
@@ -0,0 +1,89 @@
+/* This small function uses all the arithmetic operators that
+   libgcc1.c can handle.  If you can link it, then
+   you have provided replacements for all the libgcc1.c functions that
+   your target machine needs.  */
+
+int foo ();
+double dfoo ();
+
+main ()
+{
+  int a = foo (), b = foo ();
+  unsigned int au = foo (), bu = foo ();
+  float af = dfoo (), bf = dfoo ();
+  double ad = dfoo (), bd = dfoo ();
+
+  discard (a * b);
+  discard (a / b);
+  discard (a % b);
+
+  discard (au / bu);
+  discard (au % bu);
+
+  discard (a >> b);
+  discard (a << b);
+
+  discard (au >> bu);
+  discard (au << bu);
+
+  ddiscard (ad + bd);
+  ddiscard (ad - bd);
+  ddiscard (ad * bd);
+  ddiscard (ad / bd);
+  ddiscard (-ad);
+
+  ddiscard (af + bf);
+  ddiscard (af - bf);
+  ddiscard (af * bf);
+  ddiscard (af / bf);
+  ddiscard (-af);
+
+  discard ((int) ad);
+  discard ((int) af);
+
+  ddiscard ((double) a);
+  ddiscard ((float) a);
+  ddiscard ((float) ad);
+
+  discard (ad == bd);
+  discard (ad < bd);
+  discard (ad > bd);
+  discard (ad != bd);
+  discard (ad <= bd);
+  discard (ad >= bd);
+
+  discard (af == bf);
+  discard (af < bf);
+  discard (af > bf);
+  discard (af != bf);
+  discard (af <= bf);
+  discard (af >= bf);
+
+  return 0;
+}
+
+discard (x)
+     int x;
+{}
+
+ddiscard (x)
+     double x;
+{}
+
+foo ()
+{
+  static int table[] = {20, 69, 4, 12};
+  static int idx;
+
+  return table[idx++];
+}
+
+double
+dfoo ()
+{
+  static double table[] = {20.4, 69.96, 4.4, 202.202};
+  static int idx;
+
+  return table[idx++];
+}
+