OSDN Git Service

* config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Oct 2007 18:33:08 +0000 (18:33 +0000)
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Oct 2007 18:33:08 +0000 (18:33 +0000)
'#pragma mark' to be executed at preprocessing time.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129134 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/darwin.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pragma-darwin-2.c [new file with mode: 0644]

index e0c2628..9ccde30 100644 (file)
@@ -1,3 +1,8 @@
+2007-10-08  Geoffrey Keating  <geoffk@apple.com>
+
+       * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
+       '#pragma mark' to be executed at preprocessing time.
+
 2007-10-08  Ollie Wild  <aaw@google.com>
 
        * varasm.c (compare_constant): Removed call to
index e135191..d4c7ce5 100644 (file)
@@ -892,7 +892,8 @@ enum machopic_addr_class {
 
 #define DARWIN_REGISTER_TARGET_PRAGMAS()                       \
   do {                                                         \
-    c_register_pragma (0, "mark", darwin_pragma_ignore);       \
+    cpp_register_pragma (parse_in, NULL, "mark",               \
+                        darwin_pragma_ignore, false);          \
     c_register_pragma (0, "options", darwin_pragma_options);   \
     c_register_pragma (0, "segment", darwin_pragma_ignore);    \
     c_register_pragma (0, "unused", darwin_pragma_unused);     \
index f7fd6dd..d4d0ad9 100644 (file)
@@ -1,3 +1,7 @@
+2007-10-08  Geoffrey Keating  <geoffk@apple.com>
+
+       * gcc.dg/pragma-darwin-2.c: New.
+
 2007-10-08  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/33693
diff --git a/gcc/testsuite/gcc.dg/pragma-darwin-2.c b/gcc/testsuite/gcc.dg/pragma-darwin-2.c
new file mode 100644 (file)
index 0000000..4bbecef
--- /dev/null
@@ -0,0 +1,24 @@
+/* Darwin (Mac OS X) pragma exercises.  */
+
+/* { dg-do compile { target *-*-darwin* } } */
+
+/* The mark pragma is valid at any point in the program.  Fortunately
+   the compiler only needs to ignore it.  It's also followed only
+   by pp-tokens, not necessarily real C tokens.  */
+
+void foo(void) 
+{
+  if (1) {
+    ;
+  }
+  else if (1) {
+    ;
+  }
+#pragma mark "last case" "hi"
+  else if (1) {
+    ;
+  }
+}
+
+#pragma mark 802.11x 1_2_3
+#pragma mark •••• marker ••••