aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-01-24Test fix-it ranges for Unicode characters.Jordan Rose
Also, remove stray -fdiagnostics-parseable-fixits from ucn-pp-identifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173373 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Add a fixit for \U1234 -> \u1234.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173371 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24As an extension, treat Unicode whitespace characters as whitespace.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173370 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Handle universal character names and Unicode characters outside of literals.Jordan Rose
This is a missing piece for C99 conformance. This patch handles UCNs by adding a '\\' case to LexTokenInternal and LexIdentifier -- if we see a backslash, we tentatively try to read in a UCN. If the UCN is not syntactically well-formed, we fall back to the old treatment: a backslash followed by an identifier beginning with 'u' (or 'U'). Because the spelling of an identifier with UCNs still has the UCN in it, we need to convert that to UTF-8 in Preprocessor::LookUpIdentifierInfo. Of course, valid code that does *not* use UCNs will see only a very minimal performance hit (checks after each identifier for non-ASCII characters, checks when converting raw_identifiers to identifiers that they do not contain UCNs, and checks when getting the spelling of an identifier that it does not contain a UCN). This patch also adds basic support for actual UTF-8 in the source. This is treated almost exactly the same as UCNs except that we consider stray Unicode characters to be mistakes and offer a fixit to remove them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173369 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Unify diagnostics for \x, \u, and \U without any following hex digits.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173368 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Fail these tests in a way that doesn't cause unexpected successes, per Daniel'sChad Rosier
suggestion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173367 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Temporarily XFAIL this test; the compiler will segfault if the target-specificChad Rosier
parser is not included in the compiler. Thanks to Renato for discovering the underlying issue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173365 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24[ms-inline asm] Add an error when trying to compile MS-style inline assemblyChad Rosier
for an unsupported architecture. rdar://13063988 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173364 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24[driver] Associate a JobAction with each result file. This enables the driverChad Rosier
to delete result files for only those commands that fail. Part of rdar://12984531 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173361 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24PR14922: when printing an attribute, use the real syntax of the attribute ↵Michael Han
(GNU, C++11, MS Declspec) instead of hardcoded GNU syntax. Introduce a spelling index to Attr class, which is an index into the attribute spelling list of an attribute defined in Attr.td. This index will determine the actual spelling used by an attribute, as it incorporates both the syntax and naming of the attribute. When constructing an attribute AST node, the spelling index is computed based on attribute kind, scope (if it's a C++11 attribute), and name, then passed to Attr that will use the index to print itself. Thanks to Richard Smith for the idea and review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173358 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Fix a non-conformant OpenCL test case.Joey Gouly
Program scope variables must be declared in the constant address space and are required to be initialized. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173354 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Properly remove this test file, that I copied over to test/SemaOpenCL in ↵Joey Gouly
r173352. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173353 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Fix an OpenCL test case that was OpenCL conformant.Joey Gouly
It had program scope variables that were not in the constant address space, make them to be function scope variables instead. Also move the test to the SemaOpenCL directory. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173352 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24clang/GlobalModuleIndex: Don't open the same file twice. Use ↵NAKAMURA Takumi
raw_fd_ostream(fd, ...) instead. FIXME: PathV2::unique_file() is assumed to open the file with binary mode on win32. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173330 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24clang/test/Modules/global_index.m: XFAILing on win32 when investigating for now.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173326 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Give warn_redecl_library_builtin a flag name: ↵Nick Lewycky
-Wincompatible-library-redeclaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173319 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Start checking nonnull (as well as format and argument_with_type_tag) onNick Lewycky
overloaded binary operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173315 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24Fix some wonky formatting, remove spurious emacs major mode marker. NoNick Lewycky
functionality change! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173314 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Micro cleanup: use an array of const char, rather than an array of char, as theRichard Smith
type of the string literal implicitly used for a raw user-defined literal call. No test; this has no semantic impact. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173309 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Don't check lines beginning with '#', since they could contain a path with ↵Bill Wendling
the unexpected word in them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173307 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Don't check lines beginning with '#', since they could contain a path with ↵Bill Wendling
the unexpected word in them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173306 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23The diagnostic is now a warning instead of an error. Also don't check lines ↵Bill Wendling
beginning with '#', since they could contain a path with the unexpected word in them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173305 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix for case-sensitive file systems. UghDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173303 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Implement the writer side of the global module index. Douglas Gregor
The global module index is a "global" index for all of the module files within a particular subdirectory in the module cache, which keeps track of all of the "interesting" identifiers and selectors known in each of the module files. One can perform a fast lookup in the index to determine which module files will have more information about entities with a particular name/selector. This information can help eliminate redundant lookups into module files (a serious performance problem) and help with creating auto-import/auto-include Fix-Its. The global module index is created or updated at the end of a translation unit that has triggered a (re)build of a module by scraping all of the .pcm files out of the module cache subdirectory, so it catches everything. As with module rebuilds, we use the file system's atomicity to synchronize. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173301 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Add a test case for 'analyzer_noreturn' on category methods.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173295 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Always process an index.html file if we have HTML output. Patch by Justin ↵Ted Kremenek
Bogner. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173294 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Add missing null check. Not sure why my tests passed before.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173292 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Honor attribute 'analyzer_noreturn' on Objective-C methods.Ted Kremenek
This isn't likely a full solution, but it catches the common cases and can be refined over time. Fixes <rdar://problem/11634353>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173291 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Add extra indent for nested calls inside if's.Daniel Jasper
Before: if (aaaaaaaaaa( aaaaaaaaaa)) {} After: if (aaaaaaaaaa( aaaaaaaaaa)) {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173290 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Implement -Wvla correctlyDmitri Gribenko
GCC implements -Wvla as "warn on every VLA" (this is useful to find every VLA, for example, if they are forbidden by coding guidelines). Currently Clang implements -Wvla as "warn on VLA when it is an extension". The attached patch makes our behavior match GCC. The existing vla extwarn is moved under -Wvla-extension and is still included into -Wgnu. This fixes PR5953. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173286 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Factor the trait for lookup into the on-based hash table ofDouglas Gregor
identifiers into two parts: the part that involves dealing with the key (which can be re-used) and the ASTReader-specific part that creates the IdentifierInfos. While I'm at it, StringRef'ify this code, which was using pair<const char*, unsigned>. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173283 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23docs: clear up ambiguitySean Silva
Anybody using clang is a "developer". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173282 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23[PCH] Temporarily disable the "ambiguous macro" warning that is currently ↵Argyrios Kyrtzidis
bogus with a PCH that redefined a macro without undef'ing it first. Proper reconstruction of the macro info history from modules will properly fix this in subsequent commits. rdar://13016031 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173281 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Documentation: add a note that -cc1 options are not guaranteed to be stableDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173280 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23libclang: change return type of getCursorDecl() to 'const Decl *'Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173278 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Use 'const Decl *' throughout code completion in SemaDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173277 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Add constness for NestedNameSpecifier::Create parameterDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173274 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Don't try to align builder-type continuations on assignments.Daniel Jasper
Before: int aaaa = aaaaa().aaaaa() // force break .aaaaa(); After: int aaaa = aaaaa().aaaaa() // force break .aaaaa(); The other indent is just wrong and confusing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173273 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Constify some getters in RedeclarableTemplateDeclDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173272 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Remove uneeded castsDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173269 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Don't try to do a hanging ident after assignments.Daniel Jasper
Before: bool aaaa = aaaaaaaaaaa( aaaaaaaaaaaaaaaaa); After: bool aaaa = aaaaaaaaaaa( aaaaaaaaaaaaaaaaa); The other indentation was a nice attempt but doesn't work in many cases. Not sure what the right long term solution is as the "After: " is still not nice. We either need to figure out what to do in the cases where it "doesn't work" or come up with a third solution, e.g. falling back to: bool aaaa = aaaaaaaaaaa( aaaaaaaaaaaaaaaaa); which should always work and nicely highlight the structure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173268 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix handling of macro definitions.Manuel Klimek
Now correctly formats: #define A (1) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173264 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fixes layouting regression and invalid-read.Manuel Klimek
Layouting would prevent breaking before + in a[b + c] = d; Regression detected by code review. Also fixes an invalid-read found by the valgrind bot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173262 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix the formatting of pointer/reference types in range-based for loops.Daniel Jasper
Before: for (int & a : Values) {} After: for (int &a : Values) {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173259 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Removing the penalty for breaking after "=".Daniel Jasper
Having seen more cases, this actually was not a good thing to do in the first place. We can still improve on what we do now, but breaking after the "=" is good in many cases. Before: aaaaaaaaaaaaa = aa->aaaaaaaaaaaaaaaaaaaa( aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaa)); After: aaaaaaaaaaaaa = aa->aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaa)); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173257 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix another regression for pointer types.Daniel Jasper
Before: if (int * a = &b) ... After: if (int *a = &b) ... Also changed all the existing tests to test the expressions in question both in a declaration and in an expression context. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173256 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Add a new LangOpt NativeHalfType. This option allows for native half/fp16Joey Gouly
operations (as opposed to storage only half/fp16). Also add some semantic checks for OpenCL half types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173254 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix regression in formatting pointer types.Daniel Jasper
We will need a more principled solution, but we should not leave this unfixed until we come up with one. Before: void f() { int * a; } After: void f() { int *a; } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173252 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fixes incorrect handling of the declaration context stack.Manuel Klimek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173250 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-23Fix segfaults in the formatter.Manuel Klimek
Also: expletive deleted. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173247 91177308-0d34-0410-b5e6-96231b3b80d8