summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/PPDirectives.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Lexer::ReadToEndOfLine: Only build the string if it's actually used and do ↵Benjamin Kramer2012-05-181-6/+4
| | | | | | so in a less malloc-intensive way. llvm-svn: 157064
* Fixed MacroInfo definition range for function like macros with empty body.Abramo Bagnara2012-03-311-3/+2
| | | | llvm-svn: 153819
* [preprocessor] Handle correctly inclusion directives that have macro ↵Argyrios Kyrtzidis2012-03-271-2/+6
| | | | | | | | | | | | | | | | | | expansions, e.g "#include MACRO(STUFF)". -As an inclusion position for the included file, use the file location of the file where it was included but *after* the macro expansions. We want the macro expansions to be considered as before-in-translation-unit for everything in the included file. -In the preprocessing record take into account that only inclusion directives can be encountered as "out-of-order" (by comparing the start of the range which for inclusions is the hash location) and use binary search if there is an extreme number of macro expansions in the include directive. Fixes rdar://11111779 llvm-svn: 153527
* Turns #import in MS Mode into an error.Aaron Ballman2012-03-181-2/+18
| | | | llvm-svn: 153009
* Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie2012-03-111-17/+17
| | | | | | | | | | (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner llvm-svn: 152536
* User-defined literals: reject string and character UDLs in all places where theRichard Smith2012-03-061-2/+12
| | | | | | | | | | grammar requires a string-literal and not a user-defined-string-literal. The two constructs are still represented by the same TokenKind, in order to prevent a combinatorial explosion of different kinds of token. A flag on Token tracks whether a ud-suffix is present, in order to prevent clients from needing to look at the token's spelling. llvm-svn: 152098
* [preprocessor] Enhance the preprocessor callbacks:Argyrios Kyrtzidis2012-03-051-27/+29
| | | | | | | | -Add location parameter for the directives callbacks -Skip callbacks if the directive is inside a skipped range. -Make sure the directive callbacks are invoked in source order. llvm-svn: 152017
* Adding support for #pragma include_alias in MS compatibility mode. This ↵Aaron Ballman2012-03-021-0/+10
| | | | | | implements PR 10705. llvm-svn: 151949
* Change @import to @__experimental_modules_import. We are not ready to ↵Ted Kremenek2012-03-011-1/+1
| | | | | | | | commit to a particular syntax for modules, and don't have time to push it forward in the near future. llvm-svn: 151841
* Revert r151800, which was committed without review and has correctness issues.Richard Smith2012-03-011-3/+0
| | | | llvm-svn: 151804
* Implements support for #pragma include_alias in ms compatibility mode. ↵Aaron Ballman2012-03-011-0/+3
| | | | | | Fixes PR10705. llvm-svn: 151800
* Move suport for redefining operator keywords from -fms-extensions to ↵Nico Weber2012-03-011-1/+1
| | | | | | -fms-compatibility. llvm-svn: 151776
* Allow operator keywords to be #defined in ms-ext mode.Nico Weber2012-02-291-1/+8
| | | | | | | | | | | | | | Fixes PR10606. I'm not sure if this is the best way to go about it, but I locally enabled this code path without the msext conditional, and all tests pass, except for test/Preprocessor/cxx_oper_keyword.cpp which explicitly checks that operator keywords can't be redefined. I also parsed chromium/win with a clang with and without this patch. It introduced no new errors, but removes 43 existing errors. llvm-svn: 151768
* Basic: import SmallString<> into clang namespaceDylan Noblesmith2012-02-051-7/+7
| | | | | | | (I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) llvm-svn: 149799
* Per discussion on cfe-dev, remove '#error' and '#warning' from diagnostic text.Ted Kremenek2012-02-021-2/+10
| | | | llvm-svn: 149566
* Remove unreachable code in Clang. (replace with llvm_unreachable where ↵David Blaikie2012-01-171-1/+0
| | | | | | appropriate or when GCC requires it) llvm-svn: 148292
* Re-uglify #public and #private to #__public_macro and #__private_macro.Douglas Gregor2012-01-031-6/+6
| | | | llvm-svn: 147469
* Eliminate the uglified keyword __import_module__ for importingDouglas Gregor2012-01-031-2/+3
| | | | | | | | | | | | | modules. This leaves us without an explicit syntax for importing modules in C/C++, because such a syntax needs to be discussed first. In Objective-C/Objective-C++, the @import syntax is used to import modules. Note that, under -fmodules, C/C++ programs can import modules via the #include mechanism when a module map is in place for that header. This allows us to work with modules in C/C++ without committing to a syntax. llvm-svn: 147467
* Under -fmodules, accept #public <macroname> and #private <macroname>Douglas Gregor2012-01-031-11/+16
| | | | | | | to make a macro public (the default for headers) or private, respectively. llvm-svn: 147455
* Add a "Modules" language option, which subsumes the previousDouglas Gregor2012-01-031-2/+2
| | | | | | "AutoModuleImport" preprocessor option and is tied to -fmodules. llvm-svn: 147448
* Detect when mapping a #include/#import over to a submodule ends upDouglas Gregor2011-12-201-3/+4
| | | | | | | | | | | | | hitting a submodule that was never actually created, e.g., because that header wasn't parsed. In such cases, complain (because the module's umbrella headers don't cover everything) and fall back to including the header. Later, we'll add a warning at module-build time to catch all such cases. However, this fallback is important to eliminate assertions in the ASTWriter when this happens. llvm-svn: 146933
* Don't allow #include (and its friends #import, #include_next andRichard Smith2011-12-161-2/+18
| | | | | | | | #__include_macros) in the arguments of a function-style macro. Directives in the arguments of such macros have undefined behaviour, and GCC does not correctly support these cases. In some situations, this can lead to better diagnostics. llvm-svn: 146765
* Keep track of import dependencies between submodules within the moduleDouglas Gregor2011-12-081-7/+19
| | | | | | | that's currently being built. This is important for supporting transitive dependencies ("export *" in the module map) completely. llvm-svn: 146156
* When we treat an #include or #import as a module import, create anDouglas Gregor2011-12-021-1/+2
| | | | | | | implicit ImportDecl in the translation unit to record the presence of the import. llvm-svn: 145727
* Introduce the notion of name visibility into modules. For a givenDouglas Gregor2011-12-011-2/+4
| | | | | | | | | | | | | | (sub)module, all of the names may be hidden, just the macro names may be exposed (for example, after the preprocessor has seen the import of the module but the parser has not), or all of the names may be exposed. Importing a module makes its names, and the names in any of its non-explicit submodules, visible to name lookup (transitively). This commit only introduces the notion of name visible and marks modules and submodules as visible when they are imported. The actual name-hiding logic in the AST reader will follow (along with test cases). llvm-svn: 145586
* Promote ModuleMap::Module to a namespace-scope class in the BasicDouglas Gregor2011-11-301-3/+3
| | | | | | | | | library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the annoying naming conflict. Prune a bunch of ModuleMap.h includes that are no longer needed (most files only needed the Module type). llvm-svn: 145538
* Note that we'll need to handle __include_macros specially in the module loaderDouglas Gregor2011-11-301-0/+1
| | | | llvm-svn: 145514
* Move the module auto-import logic after the logic that allows aDouglas Gregor2011-11-301-29/+29
| | | | | | | | | | callback client to suggest an alternative search path and after we complain when the included file can't be found. The former can't be tested in isolation, the latter doesn't actually matter (because we won't make a module suggestion if no header is available). However, the flow is better this way. llvm-svn: 145502
* Trivial indentation fix for the code I just committedDouglas Gregor2011-11-301-3/+3
| | | | llvm-svn: 145501
* Introduce an opt-in warning indicating when the compiler is treatingDouglas Gregor2011-11-301-0/+42
| | | | | | an #include/#import as a module import. llvm-svn: 145500
* Switch the module-loading interfaces and parser from a simpleDouglas Gregor2011-11-301-7/+11
| | | | | | | top-level module name to a module path (e.g., std.vector). We're still missing a number of pieces for this actually to do something. llvm-svn: 145462
* Allow preprocessor callbacks to recover from a "file not found" error,Douglas Gregor2011-11-201-4/+23
| | | | | | from Jason Haslam! llvm-svn: 145012
* When making a suggestion regarding which module to load rather thanDouglas Gregor2011-11-171-4/+8
| | | | | | | preprocess/parse a header, report back with an actual module (which may be a submodule) rather than just the name of the module. llvm-svn: 144925
* For modules, all macros that aren't include guards are implicitlyDouglas Gregor2011-10-171-2/+35
| | | | | | | public. Add a __private_macro__ directive to hide a macro, similar to the __module_private__ declaration specifier. llvm-svn: 142188
* -Wc++98-compat warnings for the lexer.Richard Smith2011-10-151-2/+6
| | | | | | | | This also adds a -Wc++98-compat-pedantic for warning on constructs which would be diagnosed by -std=c++98 -pedantic (that is, it warns even on C++11 features which we enable by default, with no warning, in C++98 mode). llvm-svn: 142034
* A couple random preprocessor changes that got ported from C99 to C++11.Eli Friedman2011-10-101-2/+4
| | | | llvm-svn: 141596
* Add explicit attributes to mark functions as having had theirJohn McCall2011-09-301-0/+9
| | | | | | | | | | | CoreFoundation object-transfer properties audited, and add a #pragma to cause them to be automatically applied to functions in a particular span of code. This has to be implemented largely in the preprocessor because of the requirement that the region be entirely contained in a single file; that's hard to impose from the parser without registering for a ton of callbacks. llvm-svn: 140846
* Introduce a callback to PPCallbacks for lines skipped by the preprocessor.Argyrios Kyrtzidis2011-09-271-3/+10
| | | | | | Patch by Jason Haslam! llvm-svn: 140612
* Rename Diagnostic to DiagnosticsEngine as per issue 5397David Blaikie2011-09-251-1/+1
| | | | llvm-svn: 140478
* Add an experimental flag -fauto-module-import that automatically turnsDouglas Gregor2011-09-151-4/+18
| | | | | | | #include or #import direcctives of framework headers into module imports of the corresponding framework module. llvm-svn: 139860
* Support code-completion for C++ inline methods and ObjC buffering methods.Argyrios Kyrtzidis2011-09-041-2/+5
| | | | | | | | | | | | | | Previously we would cut off the source file buffer at the code-completion point; this impeded code-completion inside C++ inline methods and, recently, with buffering ObjC methods. Have the code-completion inserted into the source buffer so that it can be buffered along with a method body. When we actually hit the code-completion point the cut-off lexing or parsing. Fixes rdar://10056932&8319466 llvm-svn: 139086
* Modules hide macro definitions by default, so that silly things likeDouglas Gregor2011-09-011-0/+34
| | | | | | | | | | | include guards don't show up as macro definitions in every translation unit that imports a module. Macro definitions can, however, be exported with the intentionally-ugly #__export_macro__ directive. Implement this feature by not even bothering to serialize non-exported macros to a module, because clients of that module need not (should not) know that these macros even exist. llvm-svn: 138943
* Change err_pp_file_not_found back to an Error; when it's a Warning, we ↵Eli Friedman2011-08-301-1/+2
| | | | | | | | suppress it in system headers. And it is not a good idea to suppress it in system headers. (This was originally changed in r134996 to implement -MG.) Fixes <rdar://10041960>. And also brings down the number of warnings without a flag by one :) llvm-svn: 138842
* Don't warn on varaidic macros in C++0x mode.Eli Friedman2011-08-221-2/+2
| | | | llvm-svn: 138257
* Add support for C++0x unicode string and character literals, from Craig Topper!Douglas Gregor2011-07-271-2/+2
| | | | llvm-svn: 136210
* Rename getDecomposedInstantiationLoc to getDecomposedExpansionLoc.Chandler Carruth2011-07-251-2/+2
| | | | llvm-svn: 135962
* remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner2011-07-231-15/+15
| | | | | | | | LLVM.h imports them into the clang namespace. llvm-svn: 135852
* Implement -MG. Fixes PR9613Peter Collingbourne2011-07-121-4/+5
| | | | llvm-svn: 134996
* Don't warn for unused macro when undef'ing it, if it comes from an included ↵Argyrios Kyrtzidis2011-07-111-1/+1
| | | | | | file. rdar://9745065 llvm-svn: 134919
* Replace an unreachable error path with an assertPeter Collingbourne2011-06-301-4/+1
| | | | | | | (SourceManager::createFileID cannot return an invalid file ID). Also update a comment to reflect this. llvm-svn: 134168
OpenPOWER on IntegriCloud