[llvm-commits] [llvm-gcc-4.2] r46463 - in /llvm-gcc-4.2/trunk: gcc/config/darwin.h libcpp/directives.c libcpp/internal.h libcpp/lex.c
Bill Wendling
isanbard at gmail.com
Mon Jan 28 13:47:12 PST 2008
Author: void
Date: Mon Jan 28 15:47:12 2008
New Revision: 46463
URL: http://llvm.org/viewvc/llvm-project?rev=46463&view=rev
Log:
This program:
$ cat testcase.c
#pragma mark Mike's world
#ifdef DO_ERROR
#error Mike's world
#endif
int i;
Gives us these warnings:
pragma-2.c:1:18: warning: missing terminating ' character
pragma-2.c:3:12: warning: missing terminating ' character
We should ignore unbalanced quotes in these pragmas. Porting fixes from Apple
GCC.
Modified:
llvm-gcc-4.2/trunk/gcc/config/darwin.h
llvm-gcc-4.2/trunk/libcpp/directives.c
llvm-gcc-4.2/trunk/libcpp/internal.h
llvm-gcc-4.2/trunk/libcpp/lex.c
Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=46463&r1=46462&r2=46463&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Mon Jan 28 15:47:12 2008
@@ -1162,10 +1162,9 @@
#define DARWIN_REGISTER_TARGET_PRAGMAS() \
do { \
- /* APPLE LOCAL begin mainline 2007-10-10 5497482 */ \
- cpp_register_pragma (parse_in, NULL, "mark", \
- darwin_pragma_ignore, false); \
- /* APPLE LOCAL end mainline 2007-10-10 5497482 */ \
+ /* APPLE LOCAL begin pragma mark 5614511 */ \
+ /* Removed mark. */ \
+ /* APPLE LOCAL end pragma mark 5614511 */ \
c_register_pragma (0, "options", darwin_pragma_options); \
c_register_pragma (0, "segment", darwin_pragma_ignore); \
/* APPLE LOCAL pragma fenv */ \
Modified: llvm-gcc-4.2/trunk/libcpp/directives.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libcpp/directives.c?rev=46463&r1=46462&r2=46463&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/libcpp/directives.c (original)
+++ llvm-gcc-4.2/trunk/libcpp/directives.c Mon Jan 28 15:47:12 2008
@@ -1073,7 +1073,11 @@
if (print_dir)
fprintf (stderr, "#%s ", pfile->directive->name);
pfile->state.prevent_expansion++;
+ /* APPLE LOCAL #error with unmatched quotes 5607574 */
+ pfile->state.in_diagnostic++;
cpp_output_line (pfile, stderr);
+ /* APPLE LOCAL #error with unmatched quotes 5607574 */
+ pfile->state.in_diagnostic--;
pfile->state.prevent_expansion--;
}
}
@@ -1262,12 +1266,25 @@
}
}
+/* APPLE LOCAL begin pragma mark 5614511 */
+/* Handle #pragma mark. */
+static void
+do_pragma_mark (cpp_reader *pfile)
+{
+ ++pfile->state.skipping;
+ skip_rest_of_line (pfile);
+ --pfile->state.skipping;
+}
+/* APPLE LOCAL end pragma mark 5614511 */
+
/* Register the pragmas the preprocessor itself handles. */
void
_cpp_init_internal_pragmas (cpp_reader *pfile)
{
/* Pragmas in the global namespace. */
register_pragma_internal (pfile, 0, "once", do_pragma_once);
+ /* APPLE LOCAL pragma mark 5614511 */
+ register_pragma_internal (pfile, 0, "mark", do_pragma_mark);
/* New GCC-specific pragmas should be put in the GCC namespace. */
register_pragma_internal (pfile, "GCC", "poison", do_pragma_poison);
Modified: llvm-gcc-4.2/trunk/libcpp/internal.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libcpp/internal.h?rev=46463&r1=46462&r2=46463&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/libcpp/internal.h (original)
+++ llvm-gcc-4.2/trunk/libcpp/internal.h Mon Jan 28 15:47:12 2008
@@ -226,6 +226,11 @@
/* Nonzero if the deferred pragma being handled allows macro expansion. */
unsigned char pragma_allow_expansion;
+
+ /* APPLE LOCAL begin #error with unmatched quotes 5607574 */
+ /* Nonzero when handling #error and #warning to allow unmatched quotes. */
+ unsigned char in_diagnostic;
+ /* APPLE LOCAL end #error with unmatched quotes 5607574 */
};
/* Special nodes - identifiers with predefined significance. */
Modified: llvm-gcc-4.2/trunk/libcpp/lex.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/libcpp/lex.c?rev=46463&r1=46462&r2=46463&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/libcpp/lex.c (original)
+++ llvm-gcc-4.2/trunk/libcpp/lex.c Mon Jan 28 15:47:12 2008
@@ -665,7 +665,12 @@
cpp_error (pfile, CPP_DL_WARNING,
"null character(s) preserved in literal");
- if (type == CPP_OTHER && CPP_OPTION (pfile, lang) != CLK_ASM)
+ /* APPLE LOCAL begin #error with unmatched quotes 5607574 */
+ if (type == CPP_OTHER
+ && CPP_OPTION (pfile, lang) != CLK_ASM
+ && !pfile->state.in_diagnostic
+ && !pfile->state.skipping)
+ /* APPLE LOCAL end #error with unmatched quotes 5607574 */
cpp_error (pfile, CPP_DL_PEDWARN, "missing terminating %c character",
(int) terminator);
More information about the llvm-commits
mailing list