diff --git a/gcc/testsuite/gcc.dg/990407-1.c b/gcc/testsuite/gcc.dg/990407-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..96b3f8626394b7b638f1d53cf260111810b2e7f9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/990407-1.c
@@ -0,0 +1,18 @@
+/* Regression test for a cpplib macro-expansion bug where
+   `@' becomes `@@' when stringified.  */
+
+/* { dg-do run } */
+
+#include <string.h>
+
+#define STR(x) #x
+
+char *a = STR(@foo), *b = "@foo";
+
+int
+main(void)
+{
+  if (strcmp (a, b))
+    abort ();
+  return 0;
+}