[llvm-branch-commits] [cfe-branch] r277075 - Merging r276653:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Jul 28 16:06:58 PDT 2016


Author: hans
Date: Thu Jul 28 18:06:58 2016
New Revision: 277075

URL: http://llvm.org/viewvc/llvm-project?rev=277075&view=rev
Log:
Merging r276653:
------------------------------------------------------------------------
r276653 | ssrivastava | 2016-07-25 10:17:06 -0700 (Mon, 25 Jul 2016) | 11 lines

Support '#pragma once' in headers when using PCH
    
The '#pragma once' directive was erroneously ignored when encountered
in the header-file specified in generate-PCH-mode. This resulted in
compile-time errors in some cases with legal code, and also a misleading
warning being produced.

Patch by Warren Ristow!

Differential Revision: http://reviews.llvm.org/D19815

------------------------------------------------------------------------

Added:
    cfe/branches/release_39/test/PCH/Inputs/pragma-once.h
      - copied unchanged from r276653, cfe/trunk/test/PCH/Inputs/pragma-once.h
    cfe/branches/release_39/test/PCH/pragma-once.c
      - copied unchanged from r276653, cfe/trunk/test/PCH/pragma-once.c
Modified:
    cfe/branches/release_39/   (props changed)
    cfe/branches/release_39/lib/Lex/Pragma.cpp

Propchange: cfe/branches/release_39/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jul 28 18:06:58 2016
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:275880,275967,276102,276350,276361,276473,276716,276887,276891,276979
+/cfe/trunk:275880,275967,276102,276350,276361,276473,276653,276716,276887,276891,276979
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_39/lib/Lex/Pragma.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_39/lib/Lex/Pragma.cpp?rev=277075&r1=277074&r2=277075&view=diff
==============================================================================
--- cfe/branches/release_39/lib/Lex/Pragma.cpp (original)
+++ cfe/branches/release_39/lib/Lex/Pragma.cpp Thu Jul 28 18:06:58 2016
@@ -354,7 +354,9 @@ void Preprocessor::HandleMicrosoft__prag
 /// HandlePragmaOnce - Handle \#pragma once.  OnceTok is the 'once'.
 ///
 void Preprocessor::HandlePragmaOnce(Token &OnceTok) {
-  if (isInPrimaryFile()) {
+  // Don't honor the 'once' when handling the primary source file, unless
+  // this is a prefix to a TU, which indicates we're generating a PCH file.
+  if (isInPrimaryFile() && TUKind != TU_Prefix) {
     Diag(OnceTok, diag::pp_pragma_once_in_main_file);
     return;
   }




More information about the llvm-branch-commits mailing list