aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic
AgeCommit message (Collapse)Author
2009-05-14Implement explicit instantiations of member classes of class templates, e.g.,Douglas Gregor
template<typename T> struct X { struct Inner; }; template struct X<int>::Inner; This change is larger than it looks because it also fixes some a problem with nested-name-specifiers and tags. We weren't requiring the DeclContext associated with the scope specifier of a tag to be complete. Therefore, when looking for something like "struct X<int>::Inner", we weren't instantiating X<int>. This, naturally, uncovered a problem with member pointers, where we were requiring the left-hand side of a member pointer access expression (e.g., x->*) to be a complete type. However, this is wrong: the semantics of this expression does not require a complete type (EDG agrees). Stuart vouched for me. Blame him. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71756 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Look for and diagnose missing sentinel argument on messageFariborz Jahanian
dispatch arguments which have sentinel attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71737 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Add some basic type checking for attributes ns_returns_retained andTed Kremenek
cf_returns_retained. Currently this attribute can now be applied to any Objective-C method or C function that returns a pointer or Objective-C object type. Modify the tablegen definition of diagnostic 'warn_attribute_wrong_decl_type' to expect that the diagnostics infrastructure will add quotes around the attribute name when appropriate. Alonq with this change, I modified the places where this warning is issued to passed the attribute's IdentifierInfo* instead of having a hard-coded C constant string. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71718 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Disable access control by default. It can be enabled with the ↵Anders Carlsson
-faccess-control option. When we have better support for it, we can enable it by default again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71706 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Improve the semantic checking for explicit instantiations ofDouglas Gregor
templates. In particular: - An explicit instantiation can follow an implicit instantiation (we were improperly diagnosing this as an error, previously). - In C++0x, an explicit instantiation that follows an explicit specialization of the same template specialization is ignored. In C++98, we just emit an extension warning. - In C++0x, an explicit instantiation must be in a namespace enclosing the original template. C++98 has no such requirement. Also, fixed a longstanding FIXME regarding the integral type that is used for the size of a constant array type when it is being instantiated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71689 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13reject use of the GNU _Decimal32 extension with a diagnostic, not an abort.Chris Lattner
rdar://6880104 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71639 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Fix rdar://6881069, a crash on a form of vector_size that weChris Lattner
don't support. While it would be nice to support this eventually, this form is not common at all (just seen in gcc testsuite) and it might be better to model vector_size as a type attribute anyway. For now just emit a nice error on it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Changed wording of warning when attribute is onFariborz Jahanian
method definition. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71615 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-13Semantic analysis for explicit instantiation of class templates. WeDouglas Gregor
still aren't instantiating the definitions of class template members, and core issues 275 and 259 will both affect the checking that we do for explicit instantiations (but are not yet implemented). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71613 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12Implement parsing for explicit instantiations of class templates, e.g.,Douglas Gregor
template class X<int>; This also cleans up the propagation of template information through declaration parsing, which is used to improve some diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71608 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12improve the diagnostic for uses of the GCC "global variable in a register" ↵Chris Lattner
extension. This implements rdar://6880449 - improve diagnostic for usage of "global register variable" GCC extension git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71599 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12Method attributes may only be specified on methodFariborz Jahanian
declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12Refactor the parsing of declarations so that template declarations canDouglas Gregor
parse just a single declaration and provide a reasonable diagnostic when the "only one declarator per template declaration" rule is violated. This eliminates some ugly, ugly hackery where we used to require thatn the layout of a DeclGroup of a single element be the same as the layout of a single declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12Diagnostic wording fix, from Anders JohnsenDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71584 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-11Friend declarations are only valid inside class definitions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71489 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08We want to diagnose sending message to a forward classFariborz Jahanian
and we also want to tell which message is actually being sent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08Warn if forward class is used as a receiver.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71278 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08More type checking for properties, accessors andFariborz Jahanian
use of dot-syntax expression. This is to match gcc's. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71243 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08reimplement __sync_* builtins to be variadic and to follow the sameChris Lattner
semantic rules that gcc and icc use. This implements the variadic and concrete versions as builtins and has sema do the disambiguation. There are probably a bunch of details to finish up but this seems like a large monotonic step forward :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71212 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07Add a warning for a missing copy attribute on a property that is aMike Stump
block pointer. Radar 6441502 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71190 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07Remove -fobjc-tight-layout, seems to work!Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71184 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07Improve semantic checking for blocks. Radar 6441502Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71145 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-06More x86 target feature support.Daniel Dunbar
- Apologies for the extremely gross code duplication, I want to get this working and then decide how to get this information out of the back end. - This replaces -m[no-]sse4[12] by -m[no-]sse4, it appears gcc doesn't distinguish them? - -msse, etc. now properly disable/enable related features. - Don't always define __SSE3__... - The main missing functionality bit here is that we don't initialize the features based on the CPU for all -march options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71117 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-06Improve handling of (X86) target features.Daniel Dunbar
- This is a WIP... - This adds -march= handling to the driver, and fixes the defaulting of -mcpu on Darwin (which was using the wrong test). Instead of handling -m{sse, ...} in the driver, pass them to clang-cc as -target-feature [+-]name In clang-cc, communicate with the (clang) target to discover the legal features of a target, and the features which are enabled based on -mcpu. This is currently hardcoded just enough to not be a feature regression, we need to get this information from the backend's TableGen information somehow. This is used to construct the full list of features which are being used, which is in turn used to initialize the predefines. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71061 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-05Issue a warning in odd case of instance method usedFariborz Jahanian
in a 'Class' receiver which is not a root instance method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70987 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-04Implement support for comparing pointers with <, >, <=, >=, ==, and !=Douglas Gregor
in C++, taking into account conversions to the "composite pointer type" so that we can compare, e.g., a pointer to a derived class to a pointer to a base class. Also, upgrade the "comparing distinct pointer types" from a warning to an error for C++, since this is clearly an error. Turns out that we hadn't gone through and audited this code for C++, ever. Fixes <rdar://problem/6816420>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70829 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-04Add -fobjc-tight-layout.Daniel Dunbar
- This implements gcc style Objective-C interface layout (I think). Currently it is always off, there is no functionality change unless this is passed. For the curious, the deal is that gcc lays out the fields of a subclass as if they were part of the superclass. That is, the subclass fields immediately follow the super class fields instead of being padded to the alignment of the superclass structure. - Currently gcc uses the tight layout in 32-bit and 64-bit modes, and llvm-gcc uses it in 32-bit only, for reasons which aren't clear yet. We probably want to switch to matching gcc, once this makes it through testing... my hope is that we can also fix llvm-gcc in order to maintain compatibility between the compilers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70827 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-03PR2524: downgrade taking address of expression of type 'void' to an Eli Friedman
extension warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70805 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-03add a flag to output asm constraints so that we efficiently knowChris Lattner
if there is an input constraint that is tied to it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70669 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-03Add diagnostic for r70658.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70659 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-02Driver: Generate an error when trying to pass an LLVM bc input to aDaniel Dunbar
non-Darwin linker (sorry Gold + LTO-plugin users). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70641 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-02Downgrade the invalid offsetof error to a warning.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70634 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-01Add Sema checking for __block on vm declarations. Radar 6441502Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70601 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-01It's an error to call offsetof on a non-POD type.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70595 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-01Add support for -Wno-format-zero-length.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-01PR4013 and PR4105: pointer-like types can only be cast to/from integers Eli Friedman
and other pointer-like types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70531 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Use of super class ivar to synthesize property is back to being error.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70514 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Allow attributes 'objc_ownership_retain' and 'objc_ownership_release' to beTed Kremenek
applied to ObjCMethodDecls, not just parameters. This allows one to specific side-effects on the receiver of a message expression. No checker support yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70505 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Name the "return-type" DiagGroup and reference it in a few places.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Warn about invalid return statements by default.Steve Naroff
This fixes <rdar://problem/6839489> 10A345: Clang does not warm about mismatched returns (void return from a bool function) Will implement -Wreturn-type, -Wno-return-type in another commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70492 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30accept and ignore two new warning specifiers. -Wno-discard-qual seems easy Chris Lattner
to hook up if someone was interested. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70482 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Sema checking for incorrect placement of __block. Radar 6441502Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70452 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29Change to warning when property uses an ivar in super classFariborz Jahanian
in an @synthesize diective, as it breaks few projects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70441 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29Implement semantic analysis for transparent unions. This is largelyDouglas Gregor
based on a patch from Anders Johnsen. CodeGen support is incomplete, in that we do not properly coerce to the first field's type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70419 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29Sema and CodeGen support for attributes on blocks. Radar 6441502Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70403 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29accept and ignore two new warning options. PR410[45]Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70392 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29implement -Wformat-security properly, which is enabled by default.Chris Lattner
This enables one specific class of non-literal format warnings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70368 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29add a bunch of individual warnings to -Wformat (which isChris Lattner
on by default). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70365 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29Wire up -Wformat=2 and -Wformat-extra-argsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70364 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-29-Wformat should depend on format-extra-args so that -Wformat impliesChris Lattner
the extra argument warnings, and -Wformat -Wno-format-extra-args turns on -Wformat but not the extra-args warnings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70363 91177308-0d34-0410-b5e6-96231b3b80d8