aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic
AgeCommit message (Collapse)Author
2010-04-12Fix a crash-on-invalid involving name lookup of tag names, where weDouglas Gregor
ended up finding a function template that we didn't expect. Recover more gracefully, and fix a similar issue for class templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101040 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-11avoid double negativesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100976 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-11fix PR6811 by not parsing 'super' as a magic expression inChris Lattner
LookupInObjCMethod. Doing so allows all sorts of invalid code to slip through to codegen. This patch does not change the AST representation of super, though that would now be a natural thing to do since it can only be in the receiver position and in the base of a ObjCPropertyRefExpr. There are still several ugly areas handling super in the parser, but this is definitely a step in the right direction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100959 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-10Driver: Ignore -fobjc-gc and -fobjc-gc-only for platforms which don't ↵Daniel Dunbar
support them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100930 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-10When a member pointer is dereferenced, the class it points into must be ↵Sebastian Redl
complete. Enforce this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100925 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-10Diagnose more cases of initializing distinct members of an anonymous unionJohn McCall
member. Use a better diagnostic for this case. Also fix a bug with nested anonymous structs/unions for -Wreorder; this last was PR6575. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100923 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-10Diagnose misordered initializers in constructor templates immediately instead ofJohn McCall
when they're instantiated. Merge the note into the -Wreorder warning; it doesn't really contribute much, and it was splitting a thought across diagnostics anyway. Don't crash in the parser when a constructor's initializers end in a comma and there's no body; the recovery here is still terrible, but anything's better than a crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100922 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-09Remove fixit for string literal comparison. Telling the user to use ↵Ted Kremenek
'strcmp' is bad, and we don't have enough information to tell them how to use 'strncmp'. Instead, change the diagnostic to indicate they should use 'strncmp'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100890 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-09Improve diagnostics like "initializing <type> from an expression ofDouglas Gregor
type..." with "initializing <type> with an expression of type...", which reads better. Thanks to John for the improved wording. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100873 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-09Improve diagnostics when we fail to convert from a source type to aDouglas Gregor
destination type for initialization, assignment, parameter-passing, etc. The main issue fixed here is that we used rather confusing wording for diagnostics such as t.c:2:9: warning: initializing 'char const [2]' discards qualifiers, expected 'char *' [-pedantic] char *name = __func__; ^ ~~~~~~~~ We're not initializing a 'char const [2]', we're initializing a 'char *' with an expression of type 'char const [2]'. Similar problems existed for other diagnostics in this area, so I've normalized them all with more precise descriptive text to say what we're initializing/converting/assigning/etc. from and to. The warning for the code above is now: t.c:2:9: warning: initializing 'char *' from an expression of type 'char const [2]' discards qualifiers [-pedantic] char *name = __func__; ^ ~~~~~~~~ Fixes <rdar://problem/7447179>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100832 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Reorder diagnostics to separate the Sema::AssignmentAction diagnostics from ↵Douglas Gregor
other diagnostics git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100817 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Downgrade the "declaration does not declare anything" error to aDouglas Gregor
warning. It's not harmful to have such pointless declarations, and GCC does not diagnose this issue consistently. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100814 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Match GCC's behavior and do not include '-Wunused-parameter' in '-Wunused'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100810 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Include all warnings under '-Wunused' in '-Wmost' and '-Wall'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100786 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Sort entries in diagnostic group "Most".Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100785 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08Fronted: Kill overly specialized RecordLayoutDumper, just make ↵Daniel Dunbar
-dump-record-layouts a bit that Sema honors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100747 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08When a template (without arguments) is passed as a template typeJeffrey Yasskin
parameter, explicitly ask the user to give it arguments. We used to complain that it wasn't a type and expect the user to figure it out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100729 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07Add support for stpncpy_chk.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100711 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07add clang -cc1 level support for "-ferror-limit 42"Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100687 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07add capabilities to stop emitting errors after some limit.Chris Lattner
Right now the limit is 0 (aka disabled) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100684 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07Instead of counting totally diagnostics, split the count into a countChris Lattner
of errors and warnings. This allows us to emit something like this: 2 warnings and 1 error generated. instead of: 3 diagnostics generated. This also stops counting 'notes' because they are just follow-on information about the previous diag, not a diagnostic in themselves. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100675 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07Improve handling of friend types in several ways:Douglas Gregor
- When instantiating a friend type template, perform semantic analysis on the resulting type. - Downgrade the errors concerning friend type declarations that do not refer to classes to ExtWarns in C++98/03. C++0x allows practically any type to be befriended, and ignores the friend declaration if the type is not a class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100635 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07Check access for the implicit calls to destructors that occur when weJohn McCall
have a temporary object in C++. Also fix a tag mismatch that Doug noticed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100593 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07Improve on diagnostics when an objc class is used asFariborz Jahanian
a stand-alone type declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100588 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06Devote a special diagnostic to the typoJohn McCall
(void*) someFunction(5, 10, 15, 20); where the cast is presumably meant to be to 'void'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100574 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-06teach clang to install the inline asm diagnostic handler,Chris Lattner
allowing backend errors to be mapped through clang's diagnostics subsystem, including the backend location info. We now get: $ clang asm.c -c -o t.o -integrated-as <inline asm>:1:2: error: unrecognized instruction abc incl %eax ^ 1 diagnostic generated. With colors, and correct "# diagnostics generated". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100543 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05Make Diagnostic reference-counted, which is simpler than jugglingDouglas Gregor
maybe-ownership vs. ownership. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100498 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Improve diagnosing when a method type does not start with '-'|'+'Fariborz Jahanian
when parsing. Fixes radar 7822196. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100248 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02diagnose declaring class extension after its implementationFariborz Jahanian
(radar 7822210). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100226 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-02Resolve a layering violation by making AddTaggedVal public forChandler Carruth
PartialDiagnostic objects, and hoisting the stream operator for QualType into Type.h with the operator for the normal DiagnosticBuilder. Also remove the no longer needed friend declaration for the DeclarationName stream operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100169 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01Overhaul checking of non-type template arguments that should refer toDouglas Gregor
an object or function. Our previous checking was too lax, and ended up allowing missing or extraneous address-of operators, among other evils. The new checking provides better diagnostics and adheres more closely to the standard. Fixes PR6563 and PR6749. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100125 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-01First start at wmmintrin.h file with Intel AES-NI instructions.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100077 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Improve diagnostics when an elaborated-type-specifer containing aDouglas Gregor
nested-name-specifier (e.g., "class T::foo") fails to find a tag member in the scope nominated by the nested-name-specifier. Previously, we gave a bland error: 'Nested' does not name a tag member in the specified scope which didn't actually say where we were looking, which was rather horrible when the nested-name-specifier was instantiated. Now, we give something a bit better: error: no class named 'Nested' in 'NoDepBase<T>' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100060 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Patch implements gcc's -Wno-protocol option to suppress warningFariborz Jahanian
on unimplemented methods in protocols adopted by a class. (radar 7056600). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100028 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Reinstate my CodeModificationHint -> FixItHint renaming patch, withoutDouglas Gregor
the C-only "optimization". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100022 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Revert r100008, which inexplicably breaks the clang-i686-darwin10 builderDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100018 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-31Rename CodeModificationHint to FixItHint, since we've been using theDouglas Gregor
term "fix-it" everywhere and even *I* get tired of long names sometimes. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100008 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Improve diagnostics when printing a template instantiation backtraceDouglas Gregor
involving substitution of deduced template arguments into a class template partial specialization or function template, or when substituting explicitly-specific template arguments into a function template. We now print the actual deduced argument bindings so the user can see what got deduced. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99923 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Add Support for 'warn_unused_result" attribute onFariborz Jahanian
objective-c methods. (radar 7418262). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99903 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30Fix FileEntry declaration.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99896 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-29When copying a partial diagnostic into a DependentDiagnostic, allocateDouglas Gregor
storage for that partial diagnostic via the ASTContext's BumpPtrAllocator rather than using up slots in the ASTContext's cache. Now that we do this, we don't have to worry about destroying dependent diagnostics when destroying a DependentStoredDeclsMap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99854 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-29Optimize PartialDiagnostic's memory-allocation behavior by placing aDouglas Gregor
cache of PartialDiagnostic::Storage objects into an allocator within the ASTContext. This eliminates a significant amount of malloc traffic, for a 10% performance improvement in -fsyntax-only wall-clock time with 403.gcc's combine.c. Also, eliminate the RequireNonAbstractType hack I put in earlier, which was but a symptom of this larger problem. Fixes <rdar://problem/7806091>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99849 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-29add support for -MQ flag to quote targets in dependency file,Chris Lattner
PR6661, patch by Ori Avtalion! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99821 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-28After performing template argument deduction for a function template,Douglas Gregor
check deduced non-type template arguments and template template arguments against the template parameters for which they were deduced, performing conversions as appropriate so that deduced template arguments get the same treatment as explicitly-specified template arguments. This is the bulk of PR6723. Also keep track of whether deduction of a non-type template argument came from an array bound (vs. anywhere else). With this information, we enforce C++ [temp.deduct.type]p17, which requires exact type matches when deduction deduces a non-type template argument from something that is not an array bound. Finally, when in a SFINAE context, translate the "zero sized arrays are an extension" extension diagnostic into a hard error (for better standard conformance), which was a minor part of PR6723. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99734 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-27Improve diagnostics on incomplete implementationFariborz Jahanian
of objc classes; including which methods need be implemented and where they come from. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99724 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-26Fix comparison in isDiagnosticInFlight().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99667 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-26No need to specify ${CMAKE_CURRENT_BINARY_DIR}Kovarththanan Rajaratnam
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99622 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-26Reinstate change to non-type template arguments of integral type, soDouglas Gregor
that we extend/truncate then correct the sign to convert the non-type template argument to the template parameter's type. Previously, we reported an error when the non-type template argument was out of range; now we just warn. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99600 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-26Revert attempted fix for integral template arguments. It seems to have ↵Douglas Gregor
broken tramp3d-v4. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99583 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25Warn when the conversion of an integral non-type template argument toDouglas Gregor
the type of its corresponding non-type template parameter changes the value. Previously, we were diagnosing this as an error, which was wrong. We give reasonably nice warnings like: test/SemaTemplate/temp_arg_nontype.cpp:100:10: warning: non-type template argument value '256' truncated to '0' for template parameter of type 'unsigned char' Overflow<256> *overflow3; // expected-warning{{non-type template ... ^~~ test/SemaTemplate/temp_arg_nontype.cpp:96:24: note: template parameter is declared here template<unsigned char C> struct Overflow; ^ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99561 91177308-0d34-0410-b5e6-96231b3b80d8