aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2013-02-14When marking derived classes' virtual methods ODR-used in order to triggerNick Lewycky
instantiation in order to permit devirtualization later in codegen, skip over pure functions since those can't be devirtualization targets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175116 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12The meat of this patch is in BuildCXXMemberCalLExpr where we make it useNick Lewycky
MarkMemberReferenced instead of marking functions referenced directly. An audit of callers to MarkFunctionReferenced and DiagnoseUseOfDecl also caused a few other changes: * don't mark functions odr-used when considering them for an initialization sequence. Do mark them referenced though. * the function nominated by the cleanup attribute should be diagnosed. * operator new/delete should be diagnosed when building a 'new' expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174951 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Perform placeholder conversions on the controller of a _GenericJohn McCall
expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174930 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Diagnose loads of 'half' l-values in OpenCL.John McCall
Patch by Joey Gouly! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174928 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-11[Modules] Cope better with top-level declarations loaded after being ↵Douglas Gregor
declared in the current translation unit <rdar://problem/13189985>. These two related tweaks to keep the information associated with a given identifier correct when the identifier has been given some top-level information (say, a top-level declaration) and more information is then loaded from a module. The first ensures that an identifier that was "interesting" before being loaded from an AST is considered to be different from its on-disk counterpart. Otherwise, we lose such changes when writing the current translation unit as a module. Second, teach the code that injects AST-loaded names into the identifier chain for name lookup to keep the most recent declaration, so that we don't end up confusing our declaration chains by having a different declaration in there. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174895 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-10objective-C: Fixes a bogus warning due to not settingFariborz Jahanian
the "nonatomic" attribute in property redeclaration in class extension. Also, improved on diagnostics in this area while at it. // rdar://13156292 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174821 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09Remove some stray uses of <ctype.h> functions.Jordan Rose
These are causing assertions on some MSVC builds. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174805 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09QoI: -Wreadonly-iboutlet-property should have the warning's location on the ↵Ted Kremenek
property. There's no need to refer to the @implementation at all. Fixes <rdar://problem/13186515> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174802 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08objective-C: don't issue bogus warning aboutFariborz Jahanian
"auto-synthesized may not work correctly with 'nib' loader" when 'readonly' property is redeclared 'readwrite' in class extension. // rdar://13123861 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174775 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Excise <cctype> from Clang (except clang-tblgen) in favor of CharInfo.h.Jordan Rose
Nearly all of these changes are one-to-one replacements; the few that aren't have to do with custom identifier validation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174768 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Retain all hidden methods in the global method pool, because they may become ↵Douglas Gregor
visible <rdar://problem/13172858>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174648 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Enable overloading of OpenCL events - this is needed for the overloaded ↵Guy Benyei
OpenCL builtin functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174630 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Add OpenCL samplers as Clang builtin types and check sampler related ↵Guy Benyei
restrictions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174601 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Apply the pure-virtual odr rule to other constructs which can call overloadedNick Lewycky
operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174584 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Simplify FindExternalVisibleDeclsByName by making it return a bool indicatingRichard Smith
if it found any decls, rather than returning a list of found decls. This removes a returning-ArrayRef-to-deleted-storage bug from MultiplexExternalSemaSource (in code not exercised by any of the clang binaries), reduces the work required in the found-no-decls case with PCH, and importantly removes the need for DeclContext::lookup to be reentrant. No functionality change intended! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174576 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07-Wimplicit-fallthrough: fixed two cases where "fallthrough annotation in ↵Alexander Kornienko
unreachable code" was issued incorrectly. Summary: -Wimplicit-fallthrough: fixed two cases where "fallthrough annotation in unreachable code" was issued incorrectly: 1. In actual unreachable code, but not immediately on a fall-through execution path "fallthrough annotation does not directly precede switch label" is better; 2. After default: in a switch with covered enum cases. Actually, these shouldn't be treated as unreachable code for our purpose. Reviewers: rsmith Reviewed By: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D374 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174575 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Don't check whether a friend declaration is correctly formed when instantiating,Nick Lewycky
we already checked it when parsing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174486 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Use a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.Chad Rosier
rdar://13153516 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174477 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Test for virtual instead of pure here. It has the exact same effect, and JohnNick Lewycky
claims it will improve performance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174341 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05PR15095: Use more correct source locations for the InitListExpr we fake up forRichard Smith
vector initialization. Patch by John Stratton! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174339 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05Add some missing diagnostics for C++11 narrowing conversions.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174337 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-02PR15132: Replace "address expression must be an lvalue or a functionRichard Smith
designator" diagnostic with more correct and more human-friendly "cannot take address of rvalue of type 'T'". For the case of & &T::f, provide a custom diagnostic, rather than unhelpfully saying "cannot take address of rvalue of type '<overloaded function type>'". For the case of &array_temporary, treat it just like a class temporary (including allowing it as an extension); the existing diagnostic wording for the class temporary case works fine. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174262 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-02Don't forget to run destructors when we create an array temporary of class type.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174257 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-02This patch makes "&Cls::purevfn" not an odr use. This isn't what the standardNick Lewycky
says, but that's a defect (to be filed). "Cls::purevfn()" is still an odr use. Also fixes a bug that caused us to not mark the function referenced just because we didn't want to mark it odr used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174242 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01objc: Provide correct fixit instruction when two mismatchedFariborz Jahanian
nsstringis are compared without. // rdar://12716301 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174214 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01For ModuleLoader::makeModuleVisible() also pass the source location where theArgyrios Kyrtzidis
module import occurred. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174191 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Fixed segmentation fault when a CFGBlock has NULL successor.Alexander Kornienko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174182 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Fix PR14881 by implementing conversion rules between int and complex int.Bill Schmidt
Prior to the patch, Clang does not properly promote types when a complex integer operand is combined with an integer via a binary operator, or when one is assigned to the other in either order. This patch detects when promotion is needed (and permissible) and generates the necessary code. The test assmes no target has the same size operands for "char" and "long long," and that no target performs arithmetic on char operands without extending them to a larger format first. If there are any targets for which this is not the case, they should be XFAILed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174181 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Fix diagnostic for bad alignas use: it can't be applied to functions.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174160 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Add a new -Wundefined-inline warning for inline functions which are used but notNick Lewycky
defined. Fixes PR14993! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174158 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Implement [dcl.align]p5 and C11 6.7.5/4: alignas cannot underalign.Richard Smith
Also support alignas(0), which C++11 and C11 require us to ignore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174157 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Don't do delayed exception-specification checking on an invalidDouglas Gregor
class. Fixes <rdar://problem/13017229>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174145 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01[Sema][Attr]Fix alignment attribute printing.Michael Han
Remove "IsMSDeclspec" argument from Align attribute since the arguments in Attr.td should only model those appear in source code. Introduce attribute Accessor, and teach TableGen to generate syntax kind accessors for Align attribute, and use those accessors to decide if an alignment attribute is a declspec attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174133 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Added outer template parameter lists to friend type AST nodes.Enea Zaffanella
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174050 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Improve 'failed template argument deduction' diagnostic for the case where weRichard Smith
have a direct mismatch between some component of the template and some component of the argument. The diagnostic now says what the mismatch was, but doesn't yet say which part of the template doesn't match. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174039 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31When code completing in a statement, parenthesized expression, orDouglas Gregor
Objective-C message receiver, the user is as likely to want to write a type name as any other declaration, so give types the same priority as other declarations. Fixes <rdar://problem/12480600>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174038 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Allow the computation of the base priority for a declaration code completion ↵Douglas Gregor
result to consider the completion context git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174037 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Replace "failed template argument deduction" diagnostic with something usefulRichard Smith
in the one case where we've already factored out a reason code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174036 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Remove elements from Sema.UndefinedInternals as functions are defined. AlsoNick Lewycky
filter the elements before emitting them into a PCH. No user-visible functionality change, except that PCH files may be smaller? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174034 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Fix grammar in comment.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174033 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Clarify the diagnostic for -Wnested-anon-types.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174032 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Fix ODR-use of a MemberExpr to check before marking a pure function used. RemoveNick Lewycky
a workaround for this bug from the -Wundefined-internals warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174020 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-31Fix unused variable warnings in -asserts buildMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173996 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Add OpenCL error that a kernel function must have void return type. Includes ↵Tanya Lattner
a test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173963 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Hoist retrieval of Expr* into caller. No functionality change.Ted Kremenek
Just makes the code a little cleaner, and easier to reason about. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173953 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Move UTF conversion routines from clang/lib/Basic to llvm/lib/SupportDmitri Gribenko
This is required to use them in TableGen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173924 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Also promote fp16 types to double when they're anonymous variadic arguments.Tim Northover
__fp16 isn't covered by the standard, but this resolves the oddity that float gets promoted when passed variadically, but not the smaller type. This is required by the AArch64 ABI, and a sane action elsewhere. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173918 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Add "instancetype" as a code completion result for the return type ofDouglas Gregor
an Objective-C method. Fixes <rdar://problem/13069990>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173905 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30The instance methods of the root class of an Objective-C hieararchyDouglas Gregor
can be messaged via the metaclass. Provide code completions for this case. Fixes <rdar://problem/12560296>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173903 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-30Semantic analysis and CodeGen support for C11's _Noreturn. This is modeled asRichard Smith
an attribute for consistency with our other noreturn mechanisms. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173898 91177308-0d34-0410-b5e6-96231b3b80d8