aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c28
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2039b4c..c85fa08 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-03 <dodji@redhat.com>
+
+ PR preprocessor/64803
+ * gcc.dg/cpp/builtin-macro-1.c: New test case.
+
2015-02-02 Jan Hubicka <hubicka@ucw.cz>
* g++.dg/ipa/devirt-37.C: Disable early inlining.
diff --git a/gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c b/gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c
new file mode 100644
index 0000000..90c2883
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c
@@ -0,0 +1,28 @@
+/* Origin PR preprocessor/64803
+
+ This test ensures that the value the __LINE__ macro expands to is
+ constant and corresponds to the line of the closing parenthesis of
+ the top-most function-like macro expansion it's part of.
+
+ { dg-do run }
+ { do-options -no-integrated-cpp } */
+
+#include <assert.h>
+
+#define C(a, b) a ## b
+#define L(x) C(L, x)
+#define M(a) int L(__LINE__) = __LINE__; assert(L(__LINE__) == __LINE__);
+
+int
+main()
+{
+ M(a
+ );
+
+ assert(L20 == 20); /* 20 is the line number of the
+ closing parenthesis of the
+ invocation of the M macro. Please
+ adjust in case the layout of this
+ file changes. */
+ return 0;
+}