+2001-01-20 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * gcc.dg/cpp/macro3.c,macro4.c,strp1.c: Update.
+
2001-01-19 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/execute/20010119-1.c: New test.
Varargs test source Jamie Lokier.
All adapted for the testsuite by Neil Booth, Oct 2000. */
-int c(int x)
-{
- return x;
-}
-
-int a(int x)
-{
- return x;
-}
-
/* Tests various macro abuse is correctly expanded. */
+static int d = 4;
#define c(x) d
#define d(x) c(2)
-/* Every GCC <= 2.96 appears to fail this. */
+#if 0
+/* This macro chain above sucks up the whole file once it starts, so
+ I've commented it out. The example is left for idle amusement :-) */
#define a(x) b(
#define b(x) a(
+#endif
#define apply(...) apply2 (__VA_ARGS__)
#define half(x) ((x) / 2)
int main()
{
- /* Expands to c(2). */
- if (c(c)(c) != 2)
- abort ();
-
- /* Expands to a(2). */
- if (a(a)x)2) != 2)
+ /* Expands to c(2) then d. */
+ if (c(c)(c) != 4)
abort ();
if (apply (half, 200) != 100)
/* Copyright (C) 2000 Free Software Foundation, Inc. */
-/* { dg-do run } */
+/* { dg-do preprocess } */
-/* Test source Neil Booth. GCC <= 2.96 don't get this right. */
-
-extern void abort (void);
-
-int glue (int x, int y)
-{
- return x + y;
-}
+/* Test source Neil Booth. */
#define glue(x, y) x ## y
#define xglue(x, y) glue (x, y)
-int main ()
-{
- /* Should expand to glue (1, 2) as the second "glue" is nested. */
- if (glue (xgl, ue) (1, 2) != 3)
- abort ();
-
- return 0;
-}
+/* Should expand to glue (1, 2), then 12. */
+#if glue (xgl, ue) (1, 2) != 12
+#error glue macro
+#endif
#define f h
#define h(a) a+f
static const char s2[] = S( f(1)(2) );
-static const char t2[] = "1+f(2)";
+static const char t2[] = "1+h(2)";
#undef I
#undef f