]> granicus.if.org Git - clang/log
clang
12 years agoExtract the (InputKind, std::string) pair used to describe inputs to
Douglas Gregor [Fri, 20 Jan 2012 16:28:04 +0000 (16:28 +0000)]
Extract the (InputKind, std::string) pair used to describe inputs to
the front end into its own class, FrontendInputFile, to make it easier
to introduce new per-input data. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148546 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoLocalize variable, remove unused assignment.
Benjamin Kramer [Fri, 20 Jan 2012 14:57:34 +0000 (14:57 +0000)]
Localize variable, remove unused assignment.

Found by the clang static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148544 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove unused variables.
Benjamin Kramer [Fri, 20 Jan 2012 14:42:32 +0000 (14:42 +0000)]
Remove unused variables.

Found by clang's own static analyzer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148542 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoReenable DeadStoresChecker under --analyze, and move the IdempotentOperationsChecker...
Ted Kremenek [Fri, 20 Jan 2012 06:00:17 +0000 (06:00 +0000)]
Reenable DeadStoresChecker under --analyze, and move the IdempotentOperationsChecker to the 'experimental' category.  Fixes <rdar://problem/10146347>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148533 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement checker that looks for calls to mktemps and friends that have fewer than...
Ted Kremenek [Fri, 20 Jan 2012 05:35:06 +0000 (05:35 +0000)]
Implement checker that looks for calls to mktemps and friends that have fewer than 6 Xs.  Implements <rdar://problem/6336672>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148531 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTurn 'SecuritySyntaxChecker' into a "meta" security checker for insecure APIs. Now
Ted Kremenek [Fri, 20 Jan 2012 01:44:29 +0000 (01:44 +0000)]
Turn 'SecuritySyntaxChecker' into a "meta" security checker for insecure APIs.  Now
multiple checks are exposed as separate checkers, but CheckerManager only creates
one Checker object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148525 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[libclang] Fix crash when indexing attributes, rdar://10702250.
Argyrios Kyrtzidis [Fri, 20 Jan 2012 01:38:51 +0000 (01:38 +0000)]
[libclang] Fix crash when indexing attributes, rdar://10702250.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148524 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove PotentiallyPotentiallyEvaluated, and replace it with a much simpler and less...
Eli Friedman [Fri, 20 Jan 2012 01:26:23 +0000 (01:26 +0000)]
Remove PotentiallyPotentiallyEvaluated, and replace it with a much simpler and less error-prone way of handling the relevant cases.  Towards marking of whether a declaration is used more accurately.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148522 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Add socket API as a source of taint.
Anna Zaks [Fri, 20 Jan 2012 00:11:19 +0000 (00:11 +0000)]
[analyzer] Add socket API as a source of taint.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148518 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Skip casts when determining taint dependencies + pretty
Anna Zaks [Fri, 20 Jan 2012 00:11:16 +0000 (00:11 +0000)]
[analyzer] Skip casts when determining taint dependencies + pretty
printing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148517 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Add a utility method that allows to find the macro name used
Anna Zaks [Fri, 20 Jan 2012 00:11:12 +0000 (00:11 +0000)]
[analyzer] Add a utility method that allows to find the macro name used
at the given location.

This could be useful when checkers' logic depends on whether a function
is called with a given macro argument.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148516 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Cleanup of Symbol dump methods.
Anna Zaks [Fri, 20 Jan 2012 00:11:08 +0000 (00:11 +0000)]
[analyzer] Cleanup of Symbol dump methods.

This solves a the issue of crashing gdb when dumping a symbol; +
consistent vitualization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148515 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] www: A minor cleanup to the dev manual.
Anna Zaks [Fri, 20 Jan 2012 00:11:04 +0000 (00:11 +0000)]
[analyzer] www: A minor cleanup to the dev manual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148514 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFurther testing for instantiation of out-of-line constexpr static data member
Richard Smith [Thu, 19 Jan 2012 22:50:02 +0000 (22:50 +0000)]
Further testing for instantiation of out-of-line constexpr static data member
template definitions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148506 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAn instantiation of a constexpr static data member in a class template is
Richard Smith [Thu, 19 Jan 2012 22:46:17 +0000 (22:46 +0000)]
An instantiation of a constexpr static data member in a class template is
constexpr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148505 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoExtend the error of invalid token after declarations to include fixits for
Richard Trieu [Thu, 19 Jan 2012 22:01:51 +0000 (22:01 +0000)]
Extend the error of invalid token after declarations to include fixits for
!=, %=, ^=, &=, *=, -=, |=, /=, <<=, <=, >=, and >>= to =.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148499 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSilence set-but-unused warning.
Benjamin Kramer [Thu, 19 Jan 2012 21:12:23 +0000 (21:12 +0000)]
Silence set-but-unused warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148496 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIntroduce Lexer::getSourceText() that returns a string for the source
Argyrios Kyrtzidis [Thu, 19 Jan 2012 15:59:19 +0000 (15:59 +0000)]
Introduce Lexer::getSourceText() that returns a string for the source
that the given source range encompasses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148481 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIntroduce Lexer::makeFileCharRange() that accepts a token source range
Argyrios Kyrtzidis [Thu, 19 Jan 2012 15:59:14 +0000 (15:59 +0000)]
Introduce Lexer::makeFileCharRange() that accepts a token source range
and returns a character range with file locations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148480 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFor Lexer's isAt[Start/End]OfMacroExpansion add an out parameter for the macro
Argyrios Kyrtzidis [Thu, 19 Jan 2012 15:59:08 +0000 (15:59 +0000)]
For Lexer's isAt[Start/End]OfMacroExpansion add an out parameter for the macro
start/end location.

It is commonly needed after calling the function; with this way we avoid
recalculating it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148479 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd unit testing for Lexer.
Argyrios Kyrtzidis [Thu, 19 Jan 2012 15:59:01 +0000 (15:59 +0000)]
Add unit testing for Lexer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148478 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoExtend unwind.h with the ARM unwinder interface.
Evgeniy Stepanov [Thu, 19 Jan 2012 11:39:05 +0000 (11:39 +0000)]
Extend unwind.h with the ARM unwinder interface.

These declarations come from the sample code in the
"Exception Handling ABI for the ARM Architecture" document.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148469 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoA few style changes.
Tanya Lattner [Thu, 19 Jan 2012 01:16:16 +0000 (01:16 +0000)]
A few style changes.
Change CheckVectorLogicalOperands to pass params by ref.
Add another test case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148452 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove the now-unused CorrectTypoContext enum.
Kaelyn Uhrain [Thu, 19 Jan 2012 00:33:34 +0000 (00:33 +0000)]
Remove the now-unused CorrectTypoContext enum.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148441 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoconstexpr: converted constant expression handling for enumerator values, case
Richard Smith [Wed, 18 Jan 2012 23:55:52 +0000 (23:55 +0000)]
constexpr: converted constant expression handling for enumerator values, case
values and non-type template arguments of integral and enumeration types.

This change causes some legal C++98 code to no longer compile in C++11 mode, by
enforcing the C++11 rule that narrowing integral conversions are not permitted
in the final implicit conversion sequence for the above cases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148439 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoChange the error when a '+=' follows a declaration to suggest a fixit to '=' instead...
Richard Trieu [Wed, 18 Jan 2012 22:54:52 +0000 (22:54 +0000)]
Change the error when a '+=' follows a declaration to suggest a fixit to '=' instead of just suggesting a ';'.

Old error:
plusequaldeclare1.cc:3:8: error: expected ';' at end of declaration
  int x += 6;
       ^
       ;

New error:
plusequaldeclare1.cc:3:9: error: invalid '+=' at end of declaration; did you
      mean '='?
  int x += 6;
        ^~
        =

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148433 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse -Wdeprecated-objc-isa-usage for option to issue
Fariborz Jahanian [Wed, 18 Jan 2012 22:18:30 +0000 (22:18 +0000)]
Use  -Wdeprecated-objc-isa-usage for option to issue
deprecated usage of 'isa'. // rdar://8290002

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148430 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoConvert SemaDecl.cpp to pass callback objects to CorrectTypo.
Kaelyn Uhrain [Wed, 18 Jan 2012 21:41:41 +0000 (21:41 +0000)]
Convert SemaDecl.cpp to pass callback objects to CorrectTypo.

Includes tests highlighting the cases where accuracy has improved
(there is one call that does no filtering beyond selecting the set
of allowed keywords, and one call that only triggers for ObjC code
for which a test by someone who knows ObjC would be welcome). Also
fixes a small typo in one of the suggestion messages, and drops a
malformed "expected-note" for a suggestion that did not occur even
when the malformed note was committed as r145930.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148420 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoOptimize unqualified/global name lookup in modules by introducing a
Douglas Gregor [Wed, 18 Jan 2012 20:56:22 +0000 (20:56 +0000)]
Optimize unqualified/global name lookup in modules by introducing a
generational scheme for identifiers that avoids searching the hash
tables of a given module more than once for a given
identifier. Previously, loading any new module invalidated all of the
previous lookup results for all identifiers, causing us to perform the
lookups repeatedly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148412 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRefactor: Pull getImmediateMacroName() out of DiagnosticRenderer and
Anna Zaks [Wed, 18 Jan 2012 20:17:16 +0000 (20:17 +0000)]
Refactor: Pull getImmediateMacroName() out of DiagnosticRenderer and
into Lexer and Preprocessor; making it widely available.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148410 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoobjc: deprecate direct usage of 'isa' of objc objects
Fariborz Jahanian [Wed, 18 Jan 2012 19:08:56 +0000 (19:08 +0000)]
objc: deprecate direct usage of 'isa' of objc objects
in favor of usage of api's intended for.
// rdar://8290002

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148404 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIn the driver, -fmodules enables modules for C/Objective-C but one
Douglas Gregor [Wed, 18 Jan 2012 15:19:58 +0000 (15:19 +0000)]
In the driver, -fmodules enables modules for C/Objective-C but one
also needs -fcxx-modules to enable modules for C++/Objective-C++.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148393 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd and update tests for character literals
Seth Cantrell [Wed, 18 Jan 2012 12:27:10 +0000 (12:27 +0000)]
Add and update tests for character literals

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148392 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agostop claiming unicode escape sequences are too long in strings, because they never are
Seth Cantrell [Wed, 18 Jan 2012 12:27:08 +0000 (12:27 +0000)]
stop claiming unicode escape sequences are too long in strings, because they never are

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148391 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix char literal types in C
Seth Cantrell [Wed, 18 Jan 2012 12:27:06 +0000 (12:27 +0000)]
Fix char literal types in C

L'x' is actually wchar_t

support C11 u and U char literals

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148390 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImproves support for Unicode in character literals
Seth Cantrell [Wed, 18 Jan 2012 12:27:04 +0000 (12:27 +0000)]
Improves support for Unicode in character literals

Updates ProcessUCNExcape() for C++. C++11 allows UCNs in character
and string literals that represent control characters and basic
source characters. Also C++03 allows UCNs that refer to surrogate
codepoints.

UTF-8 sequences in character literals are now handled as single
c-chars.

Added error for multiple characters in Unicode character literals.

Added errors for when a the execution charset encoding of a c-char
cannot be represented as a single code unit in the associated
character type. Note that for the purposes of this error the asso-
ciated character type for a narrow character literal is char, not
int, even though in C narrow character literals have type int.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148389 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agotest svn commit access
Seth Cantrell [Wed, 18 Jan 2012 12:11:32 +0000 (12:11 +0000)]
test svn commit access

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148388 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoConvert DiagnoseEmptyLookup to use correction callbacks.
Kaelyn Uhrain [Wed, 18 Jan 2012 05:58:54 +0000 (05:58 +0000)]
Convert DiagnoseEmptyLookup to use correction callbacks.

No new unit tests yet as there is no behavioral change
(except for slightly more specific filtering in
Sema::ActOnStartOfLambdaDefinition). Tests will be added
as the code paths are traced in greater depth to determine
how to improve the results--there are at least one or two
known bugs that require those improvements. This commit
lays the groundwork for those changes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148382 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMove narrowing conversion detection code from SemaInit to SemaOverload, ready
Richard Smith [Wed, 18 Jan 2012 05:21:49 +0000 (05:21 +0000)]
Move narrowing conversion detection code from SemaInit to SemaOverload, ready
for it to be used in converted constant expression checking, and fix a couple
of issues:
 - Conversion operators implicitly invoked prior to the narrowing conversion
   were not being correctly handled when determining whether a constant value
   was narrowed.
 - For conversions from floating-point to integral types, the diagnostic text
   incorrectly always claimed that the source expression was not a constant
   expression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148381 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd testcase for r148375!
Nick Lewycky [Wed, 18 Jan 2012 04:28:31 +0000 (04:28 +0000)]
Add testcase for r148375!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148378 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake PotentiallyPotentiallyEvaluated contexts work correctly when referencing a class...
Eli Friedman [Wed, 18 Jan 2012 03:53:45 +0000 (03:53 +0000)]
Make PotentiallyPotentiallyEvaluated contexts work correctly when referencing a class field from outside an instance method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148376 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a string over-run detected by ASAN.
Nick Lewycky [Wed, 18 Jan 2012 03:41:19 +0000 (03:41 +0000)]
Fix a string over-run detected by ASAN.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148375 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoA call to strlen is not a constant expression, even if we're treating it as a
Richard Smith [Wed, 18 Jan 2012 03:06:12 +0000 (03:06 +0000)]
A call to strlen is not a constant expression, even if we're treating it as a
builtin.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148374 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThe value of a case statement is a potentially evaluated context. Found by inspection.
Eli Friedman [Wed, 18 Jan 2012 02:54:10 +0000 (02:54 +0000)]
The value of a case statement is a potentially evaluated context. Found by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148373 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Refactor: prePropagateTaint ->
Anna Zaks [Wed, 18 Jan 2012 02:45:13 +0000 (02:45 +0000)]
[analyzer] Refactor: prePropagateTaint ->
TaintPropagationRule::process().

Also remove the "should be a pointer argument" warning - should be
handled elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148372 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Taint: warn when tainted data is used to specify a buffer
Anna Zaks [Wed, 18 Jan 2012 02:45:11 +0000 (02:45 +0000)]
[analyzer] Taint: warn when tainted data is used to specify a buffer
size (Ex: in malloc, memcpy, strncpy..)

(Maybe some of this could migrate to the CString checker. One issue
with that is that we might want to separate security issues from
regular API misuse.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148371 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Taint: add taint propagation rules for string and memory copy
Anna Zaks [Wed, 18 Jan 2012 02:45:07 +0000 (02:45 +0000)]
[analyzer] Taint: add taint propagation rules for string and memory copy
functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148370 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoConstify FunctionDecl::getmemoryFunctionKind().
Anna Zaks [Wed, 18 Jan 2012 02:45:01 +0000 (02:45 +0000)]
Constify FunctionDecl::getmemoryFunctionKind().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148369 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix special king of typo.
Nick Lewycky [Wed, 18 Jan 2012 01:50:13 +0000 (01:50 +0000)]
Fix special king of typo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148368 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a couple issues where we didn't correctly delay diagnostics in PotentiallyPotenti...
Eli Friedman [Wed, 18 Jan 2012 01:05:54 +0000 (01:05 +0000)]
Fix a couple issues where we didn't correctly delay diagnostics in PotentiallyPotentiallyEvaluated contexts.  In preparation for making sizeof() PotentiallyPotentiallyEvaluated.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148367 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agooutput body of folded case again.
Fariborz Jahanian [Tue, 17 Jan 2012 23:55:19 +0000 (23:55 +0000)]
output body of folded case again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148361 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFolding away unreachable case statement.
Fariborz Jahanian [Tue, 17 Jan 2012 23:39:50 +0000 (23:39 +0000)]
Folding away unreachable case statement.
patch (slightly revised) by Aaron Ballman.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148359 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake sure to initialize ExternalProtocolPtrTy
Douglas Gregor [Tue, 17 Jan 2012 23:38:32 +0000 (23:38 +0000)]
Make sure to initialize ExternalProtocolPtrTy

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148358 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoobjc-arc: when 'assign' attribute is unspecified,
Fariborz Jahanian [Tue, 17 Jan 2012 22:58:16 +0000 (22:58 +0000)]
objc-arc: when 'assign' attribute is unspecified,
rely on property's type for its life-time to avoid
bogus warning with -Warc-unsafe-retained-assign.
// rdar://10694932

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148355 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd Sema::isInitListConstructor. This will be needed for upcoming work.
Sebastian Redl [Tue, 17 Jan 2012 22:50:14 +0000 (22:50 +0000)]
Add Sema::isInitListConstructor. This will be needed for upcoming work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148354 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAuto deduction support for std::initializer_list, including for-range support. This...
Sebastian Redl [Tue, 17 Jan 2012 22:50:08 +0000 (22:50 +0000)]
Auto deduction support for std::initializer_list, including for-range support. This means you can now write:

for (int i : {1, 4, 512, 23, 251}) {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148353 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTemplate argument deduction for std::initializer_list arguments from initializer...
Sebastian Redl [Tue, 17 Jan 2012 22:49:58 +0000 (22:49 +0000)]
Template argument deduction for std::initializer_list arguments from initializer lists.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148352 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRename the first of 11 DeduceTemplateArguments overloads.
Sebastian Redl [Tue, 17 Jan 2012 22:49:52 +0000 (22:49 +0000)]
Rename the first of 11 DeduceTemplateArguments overloads.

There are 5 functions of this name in Sema, and 6 more static helpers in
SemaTemplateDeduction.cpp. The Sema functions have jobs like "deduce for
function call", "deduce for taking the address", etc. The static helpers
have jobs like "deduce by comparing two types", "deduce by comparing two
lists of types", "deduce by comparing two template arguments", etc.
The fact that they all are called the same and only differ in two of their
6 or more arguments makes the code using them very hard to read.

Here I rename the one function that concerns me most at the moment, but
as a matter of cleanup, the others will eventually be renamed as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148351 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoBasic overloading support for std::initializer_list.
Sebastian Redl [Tue, 17 Jan 2012 22:49:48 +0000 (22:49 +0000)]
Basic overloading support for std::initializer_list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148350 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSema support for initialization of std::initializer_list from initializer lists.
Sebastian Redl [Tue, 17 Jan 2012 22:49:42 +0000 (22:49 +0000)]
Sema support for initialization of std::initializer_list from initializer lists.

This does not yet support CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148349 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd Sema::isStdInitializerList, which will be necessary for the upcoming operations.
Sebastian Redl [Tue, 17 Jan 2012 22:49:33 +0000 (22:49 +0000)]
Add Sema::isStdInitializerList, which will be necessary for the upcoming operations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148348 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix for PR11655
Anton Yartsev [Tue, 17 Jan 2012 22:40:00 +0000 (22:40 +0000)]
fix for PR11655
changes i64 alignment from 64 to 32 for powerpc-darwin

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148345 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDisable -Wduplicate-method-match by default. <rdar://problem/10663536>
Bob Wilson [Tue, 17 Jan 2012 22:24:32 +0000 (22:24 +0000)]
Disable -Wduplicate-method-match by default.  <rdar://problem/10663536>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148343 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd __builtin_labs and __builtin_llabs, to complete the set of __builtin_*abs. Patch...
Eli Friedman [Tue, 17 Jan 2012 22:11:30 +0000 (22:11 +0000)]
Add __builtin_labs and __builtin_llabs, to complete the set of __builtin_*abs.  Patch by Ruben Van Boxem.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148340 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove constant member pointer support from Expr-based constant emission now
Richard Smith [Tue, 17 Jan 2012 21:42:19 +0000 (21:42 +0000)]
Remove constant member pointer support from Expr-based constant emission now
that APValue-based constant emission knows how to emit member pointers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148336 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoCorrectly resolve an overload set passed to an overloaded operator=. PR11784.
Eli Friedman [Tue, 17 Jan 2012 21:27:43 +0000 (21:27 +0000)]
Correctly resolve an overload set passed to an overloaded operator=.  PR11784.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148335 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoEnable constant evaluation of implicit calls to constexpr conversion operators.
Richard Smith [Tue, 17 Jan 2012 21:17:26 +0000 (21:17 +0000)]
Enable constant evaluation of implicit calls to constexpr conversion operators.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148333 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoEnable the new ObjC ARC autorelease pool elimination pass.
Dan Gohman [Tue, 17 Jan 2012 20:54:51 +0000 (20:54 +0000)]
Enable the new ObjC ARC autorelease pool elimination pass.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148331 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWhen initializing a catch variable in ARC, be sure to emit retains
John McCall [Tue, 17 Jan 2012 20:16:56 +0000 (20:16 +0000)]
When initializing a catch variable in ARC, be sure to emit retains
or whatever else is required for the initialization instead of
assuming it can be done with a simple store.

Fixes PR11732.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148325 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix a couples of issues in format strings checking.
Jean-Daniel Dupas [Tue, 17 Jan 2012 20:03:31 +0000 (20:03 +0000)]
Fix a couples of issues in format strings checking.
PR 10274: format function attribute with the NSString archetype yields no compiler warnings
PR 10275: format function attribute isn't checked in Objective-C methods

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148324 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRework the way in which we (de-)serialize the declarations
Douglas Gregor [Tue, 17 Jan 2012 19:21:53 +0000 (19:21 +0000)]
Rework the way in which we (de-)serialize the declarations
corresponding to TagType and ObjCInterfaceType. Previously, we would
serialize the definition (if available) or the canonical declaration
(if no definition was available). However, this can end up forcing the
deserialization of the definition even through we might not want to
yet.

Instead, always serialize the canonical declaration reference in the
TagType/ObjCInterfaceType entry, and as part of loading a pending
definition, update the "decl" pointer within the type node to point at
the definition. This is more robust in hard-to-isolate cases
where the *Type gets built and filled in before we see the definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148323 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoobjc: fixes a bug where struct used inside an
Fariborz Jahanian [Tue, 17 Jan 2012 18:52:07 +0000 (18:52 +0000)]
objc: fixes a bug where struct used inside an
objc class was not being exported to parent decl
context resulting in bogus mismatch warning later on.
// rdar://10655530

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148320 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[libclang] Make sure Preprocessor is set in ASTUnit during indexing.
Argyrios Kyrtzidis [Tue, 17 Jan 2012 18:48:07 +0000 (18:48 +0000)]
[libclang] Make sure Preprocessor is set in ASTUnit during indexing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148319 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDon't eagerly deserialize the 'Protocol' type when initializing code
Douglas Gregor [Tue, 17 Jan 2012 18:36:30 +0000 (18:36 +0000)]
Don't eagerly deserialize the 'Protocol' type when initializing code
generation for Objective-C; it may not be needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148317 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWhen collecting all of the redeclarations of a declaration loaded from
Douglas Gregor [Tue, 17 Jan 2012 18:13:45 +0000 (18:13 +0000)]
When collecting all of the redeclarations of a declaration loaded from
a module file, be sure to also add the first (potentially canonical)
declarations to the chain. This isn't guaranteed to occur because the
first declaration is not listed in the stored redeclaration chain.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148314 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDelay the creation of the built-in Objective-C class 'Protocol' by
Douglas Gregor [Tue, 17 Jan 2012 18:09:05 +0000 (18:09 +0000)]
Delay the creation of the built-in Objective-C class 'Protocol' by
moving it from a "special type" to a predefined declaration, as we do
for id, Class, and SEL.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148313 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTreat -Wformat=0 as an alias for -Wformat.
Hans Wennborg [Tue, 17 Jan 2012 09:30:38 +0000 (09:30 +0000)]
Treat -Wformat=0 as an alias for -Wformat.

Fixes PR9195.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148300 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRe-add an over-zealously removed break.
David Blaikie [Tue, 17 Jan 2012 08:24:58 +0000 (08:24 +0000)]
Re-add an over-zealously removed break.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148296 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove dead comments as per Chandler's feedback to r148292
David Blaikie [Tue, 17 Jan 2012 07:28:46 +0000 (07:28 +0000)]
Remove dead comments as per Chandler's feedback to r148292

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148294 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove unreachable code in Clang. (replace with llvm_unreachable where appropriate...
David Blaikie [Tue, 17 Jan 2012 06:56:22 +0000 (06:56 +0000)]
Remove unreachable code in Clang. (replace with llvm_unreachable where appropriate or when GCC requires it)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148292 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove unnecessary default cases in switches over enums.
David Blaikie [Tue, 17 Jan 2012 02:30:50 +0000 (02:30 +0000)]
Remove unnecessary default cases in switches over enums.

This allows -Wswitch-enum to find switches that need updating when these enums are modified.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148281 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[libclang] Make clang_getCursorCompletionString not depend on the ASTUnit having
Argyrios Kyrtzidis [Tue, 17 Jan 2012 02:15:54 +0000 (02:15 +0000)]
[libclang] Make clang_getCursorCompletionString not depend on the ASTUnit having
a Sema.

This allows it to work when Sema is not available, like when loading AST files.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148279 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIntroduce a CodeCompletionResult::CreateCodeCompletionString() that
Argyrios Kyrtzidis [Tue, 17 Jan 2012 02:15:51 +0000 (02:15 +0000)]
Introduce a CodeCompletionResult::CreateCodeCompletionString() that
does not depend on Sema, it accepts an ASTContext and a Preprocessor.

Step towards making clang_getCursorCompletionString not depend on Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148278 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoIntroduce a static Sema::MarkDeducedTemplateParameters() that only depends
Argyrios Kyrtzidis [Tue, 17 Jan 2012 02:15:41 +0000 (02:15 +0000)]
Introduce a static Sema::MarkDeducedTemplateParameters() that only depends
on an ASTContext.

This is a step towards making clang_getCursorCompletionString not depend on Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148277 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevert r148271; this requires more thought.
Eli Friedman [Tue, 17 Jan 2012 02:13:45 +0000 (02:13 +0000)]
Revert r148271; this requires more thought.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148276 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoChange the behavior of the lvalue-to-rvalue conversion for varargs in PotentiallyPote...
Eli Friedman [Tue, 17 Jan 2012 01:17:46 +0000 (01:17 +0000)]
Change the behavior of the lvalue-to-rvalue conversion for varargs in PotentiallyPotentiallyEvaluated contexts so that we model it in a sane way in most cases, and give up for the edge case which hopefully doesn't matter too much.

In preparation for correctly treating sizeof() as a PotentiallyPotentiallyEvaluated context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148271 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImprove diagnostics for dangling '}'.
Nico Weber [Tue, 17 Jan 2012 01:04:27 +0000 (01:04 +0000)]
Improve diagnostics for dangling '}'.

Fixes PR6484. Patch from Jason Switzer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148270 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse Builtin ID as the return value
Anna Zaks [Tue, 17 Jan 2012 00:37:07 +0000 (00:37 +0000)]
Use Builtin ID as the return value
for FunctionDecl::getMemoryFunctionKind().

This is a follow up on the Chris's review for r148142: We don't want to
pollute FunctionDecl with an extra enum. (To make this work, added
memcmp and family to the library builtins.)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148267 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago[analyzer] Taint: generalize taint propagation to simplify adding more
Anna Zaks [Tue, 17 Jan 2012 00:37:02 +0000 (00:37 +0000)]
[analyzer] Taint: generalize taint propagation to simplify adding more
taint propagation functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148266 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd new line.
Tanya Lattner [Mon, 16 Jan 2012 21:15:33 +0000 (21:15 +0000)]
Add new line.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148255 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd support for OpenCL 1.1 logical operations.
Tanya Lattner [Mon, 16 Jan 2012 21:02:28 +0000 (21:02 +0000)]
Add support for OpenCL 1.1 logical operations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148254 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd some calls to MarkDeclarationReferenced, towards a point where every declaration...
Eli Friedman [Mon, 16 Jan 2012 21:00:51 +0000 (21:00 +0000)]
Add some calls to MarkDeclarationReferenced, towards a point where every declaration which is used is marked as used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148253 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake the auto-detection hack for the iOS simulator set the target triple correctly...
Eli Friedman [Mon, 16 Jan 2012 18:50:54 +0000 (18:50 +0000)]
Make the auto-detection hack for the iOS simulator set the target triple correctly.  Getting the target triple wrong mostly appears to work, but messes up in subtle cases; for example, we incorrectly conclude that fwrite is actually named fwrite$UNIX2003.  Also shuffles around the auto-detection code a bit to try and make it a bit more reliable.  Fixes <rdar://problem/10664848>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148249 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAnother test for 148243
Fariborz Jahanian [Mon, 16 Jan 2012 18:22:26 +0000 (18:22 +0000)]
Another test for 148243
non-constant-folded-switch containing a constant-folded switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148247 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoA little more elaborate test for r148243
Fariborz Jahanian [Mon, 16 Jan 2012 18:07:45 +0000 (18:07 +0000)]
A little more elaborate test for r148243

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148245 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPatch for r148243 which was left behind.
Fariborz Jahanian [Mon, 16 Jan 2012 17:52:22 +0000 (17:52 +0000)]
Patch for r148243 which was left behind.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148244 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFixes a crash during constant folding of a switch and case
Fariborz Jahanian [Mon, 16 Jan 2012 17:35:57 +0000 (17:35 +0000)]
Fixes a crash during constant folding of a switch and case
statement which has an unscoped case inside it.
Patch by Aaron Ballman

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148243 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSome improvements to the handling of C11 atomic types:
David Chisnall [Mon, 16 Jan 2012 17:27:18 +0000 (17:27 +0000)]
Some improvements to the handling of C11 atomic types:

- Add atomic-to/from-nonatomic cast types
- Emit atomic operations for arithmetic on atomic types
- Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load
- Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type.  This is needed for the corresponding C11 stdatomic.h function.
- Enables the relevant __has_feature() checks.  The feature isn't 100% complete yet, but it's done enough that we want people testing it.

Still to do:

- Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg.
- Add a signal fence builtin
- Properly set the fenv state in atomic operations on floating point values
- Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context)
- Fix the many remaining corner cases

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148242 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRefactor variables unused under non-assert builds.
David Blaikie [Mon, 16 Jan 2012 05:16:03 +0000 (05:16 +0000)]
Refactor variables unused under non-assert builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148229 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoNow that deserializing a definition of a C++ class/Objective-C
Douglas Gregor [Sun, 15 Jan 2012 18:17:48 +0000 (18:17 +0000)]
Now that deserializing a definition of a C++ class/Objective-C
class/Objective-C protocol suffices get all of the redeclarations of
that declaration wired to the definition, we no longer need to record
the identity of the definition in every declaration. Instead, just
record a bit to indicate whether a particular declaration is the
definition.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148224 91177308-0d34-0410-b5e6-96231b3b80d8