]> granicus.if.org Git - clang/log
clang
12 years agoSmall refactoring and simplification of constant evaluation and some of its
Richard Smith [Wed, 28 Dec 2011 19:48:30 +0000 (19:48 +0000)]
Small refactoring and simplification of constant evaluation and some of its
clients. No functionality change.

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

12 years agoHandle a /etc/debian_version with a version number instead of a codename.
Rafael Espindola [Wed, 28 Dec 2011 18:17:14 +0000 (18:17 +0000)]
Handle a /etc/debian_version with a version number instead of a codename.
Patch by Sylvestre Ledru. Fixes PR11673.

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

12 years agoAdd a target hook for FLT_EVAL_METHOD and use it to set the value on x86 with sse...
Benjamin Kramer [Wed, 28 Dec 2011 15:47:06 +0000 (15:47 +0000)]
Add a target hook for FLT_EVAL_METHOD and use it to set the value on x86 with sse disabled.

x87 math evaluates everything with 80 bits precision, so we have to set FLT_EVAL_METHOD
to "2".

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

12 years agoSupport the 'a' scanf length modifier as an extension in C++.
Hans Wennborg [Wed, 28 Dec 2011 13:10:50 +0000 (13:10 +0000)]
Support the 'a' scanf length modifier as an extension in C++.

It should not be supported in C++11, since that uses the C99 standard
library, in which 'a' is a format specifier.

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

12 years agoEnable the user to control whether CXXConstructExpr will be added as a
Zhongxing Xu [Wed, 28 Dec 2011 04:38:46 +0000 (04:38 +0000)]
Enable the user to control whether CXXConstructExpr will be added as a
block-level expr. Currently CXXConstructExpr is always added as a block-level
expr. This caused two problems for the analyzer (and potentially for the
CFG-based codegen).
1. We have no way to know whether a ctor call is base or complete.
2. We have no way to know the destination object being contructed.

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

12 years agoEliminate ObjCClassDecl, which is redundant now that ObjCInterfaceDecl
Douglas Gregor [Tue, 27 Dec 2011 22:43:10 +0000 (22:43 +0000)]
Eliminate ObjCClassDecl, which is redundant now that ObjCInterfaceDecl
covers both declarations (@class) and definitions (@interface) of an
Objective-C class.

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

12 years agoFix the visibility of methods of explicit template instantiation definition
Rafael Espindola [Tue, 27 Dec 2011 21:15:28 +0000 (21:15 +0000)]
Fix the visibility of methods of explicit template instantiation definition
when using -fvisibility-inlines-hidden. This matches gcc's behavior and
documentation.

Fixes PR11642.

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

12 years agoconstexpr: support for evaluation and codegen of typeid constants.
Richard Smith [Tue, 27 Dec 2011 12:18:28 +0000 (12:18 +0000)]
constexpr: support for evaluation and codegen of typeid constants.

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

12 years agoInitialize member that ends up in PCH files.
Benjamin Kramer [Tue, 27 Dec 2011 11:15:04 +0000 (11:15 +0000)]
Initialize member that ends up in PCH files.

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

12 years agoPartially revert r147195; lib/Basic/Version.cpp conditionally depends on config.h.
Eli Friedman [Mon, 26 Dec 2011 22:43:17 +0000 (22:43 +0000)]
Partially revert r147195; lib/Basic/Version.cpp conditionally depends on config.h.

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

12 years agoDelay checking of typedefs of dependent types. Fixes PR11630.
Rafael Espindola [Mon, 26 Dec 2011 22:42:47 +0000 (22:42 +0000)]
Delay checking of typedefs of dependent types. Fixes PR11630.

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

12 years agodriver: fix unused variable warning
Dylan Noblesmith [Mon, 26 Dec 2011 19:29:47 +0000 (19:29 +0000)]
driver: fix unused variable warning

from r147218.

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

12 years agoFix potential use after free.
Benjamin Kramer [Mon, 26 Dec 2011 14:18:37 +0000 (14:18 +0000)]
Fix potential use after free.

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

12 years agoclang/lib/Headers/CMakeLists.txt: Unbreak cmake build to add bmi2intrin.h since r147275.
NAKAMURA Takumi [Mon, 26 Dec 2011 03:20:06 +0000 (03:20 +0000)]
clang/lib/Headers/CMakeLists.txt: Unbreak cmake build to add bmi2intrin.h since r147275.

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

12 years agoAdd BMI2 intrinsics.
Craig Topper [Mon, 26 Dec 2011 02:31:10 +0000 (02:31 +0000)]
Add BMI2 intrinsics.

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

12 years agoFix constexpr handling to allow 'extern constexpr' variable declarations. We no
Richard Smith [Sun, 25 Dec 2011 21:17:58 +0000 (21:17 +0000)]
Fix constexpr handling to allow 'extern constexpr' variable declarations. We no
longer have access to the source locations we need to produce the
'replace constexpr with const' fixits, so they're gone for now.

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

12 years agoconstexpr: perform zero-initialization prior to / instead of performing a
Richard Smith [Sun, 25 Dec 2011 20:00:17 +0000 (20:00 +0000)]
constexpr: perform zero-initialization prior to / instead of performing a
constructor call when appropriate. Thanks to Eli for spotting this.

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

12 years agoChange LZCNT and BMI tests to check IR instead of X86 assembly.
Craig Topper [Sun, 25 Dec 2011 15:20:31 +0000 (15:20 +0000)]
Change LZCNT and BMI tests to check IR instead of X86 assembly.

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

12 years agolib/Headers/CMakeLists.txt: Fix cmake build since r147263, for two missing headers.
NAKAMURA Takumi [Sun, 25 Dec 2011 12:47:46 +0000 (12:47 +0000)]
lib/Headers/CMakeLists.txt: Fix cmake build since r147263, for two missing headers.

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

12 years agoAdd the rest of the BMI intrinsics.
Craig Topper [Sun, 25 Dec 2011 07:27:12 +0000 (07:27 +0000)]
Add the rest of the BMI intrinsics.

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

12 years agoAdd intrinsics for lzcnt and tzcnt instructions.
Craig Topper [Sun, 25 Dec 2011 06:25:37 +0000 (06:25 +0000)]
Add intrinsics for lzcnt and tzcnt instructions.

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

12 years agoAdd BMI, BMI2, and LZCNT feature flags to enable adding intrinsics.
Craig Topper [Sun, 25 Dec 2011 05:06:45 +0000 (05:06 +0000)]
Add BMI, BMI2, and LZCNT feature flags to enable adding intrinsics.

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

12 years agoRemove unused variables.
Rafael Espindola [Sun, 25 Dec 2011 01:18:52 +0000 (01:18 +0000)]
Remove unused variables.

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

12 years agoAlways implicitly declare move assignment operations for dynamic classes, in
Richard Smith [Sat, 24 Dec 2011 21:56:24 +0000 (21:56 +0000)]
Always implicitly declare move assignment operations for dynamic classes, in
case they override virtual functions from a base class. Also fix -print-stats
counting of move assignment/construction.

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

12 years agoAdd last of the AVX2 intrinsics except for gather.
Craig Topper [Sat, 24 Dec 2011 17:20:15 +0000 (17:20 +0000)]
Add last of the AVX2 intrinsics except for gather.

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

12 years agoAdd AVX2 permute intrinsics. Also add parentheses on some macro arguments in other...
Craig Topper [Sat, 24 Dec 2011 07:55:25 +0000 (07:55 +0000)]
Add AVX2 permute intrinsics. Also add parentheses on some macro arguments in other intrinsic headers.

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

12 years agoAdd AVX2 permute intrinsics. Also add parentheses on some macro arguments in other...
Craig Topper [Sat, 24 Dec 2011 07:55:14 +0000 (07:55 +0000)]
Add AVX2 permute intrinsics. Also add parentheses on some macro arguments in other intrinsic headers.

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

12 years agoAdd AVX2 intrinsics for FP vbroadcast, vbroadcasti128, and vpblendd.
Craig Topper [Sat, 24 Dec 2011 05:19:47 +0000 (05:19 +0000)]
Add AVX2 intrinsics for FP vbroadcast, vbroadcasti128, and vpblendd.

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

12 years agoAdd AVX2 intrinsics for FP vbroadcast, vbroadcasti128, and vpblendd.
Craig Topper [Sat, 24 Dec 2011 05:19:29 +0000 (05:19 +0000)]
Add AVX2 intrinsics for FP vbroadcast, vbroadcasti128, and vpblendd.

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

12 years agoIntrinsics for AVX2 unpack instructions.
Craig Topper [Sat, 24 Dec 2011 03:58:43 +0000 (03:58 +0000)]
Intrinsics for AVX2 unpack instructions.

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

12 years agoMore AVX2 intrinsics for shift, psign, some shuffles, and psadbw.
Craig Topper [Sat, 24 Dec 2011 03:28:57 +0000 (03:28 +0000)]
More AVX2 intrinsics for shift, psign, some shuffles, and psadbw.

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

12 years agoFix several issues related to specializations and explicit instantiations.
Nico Weber [Fri, 23 Dec 2011 20:58:04 +0000 (20:58 +0000)]
Fix several issues related to specializations and explicit instantiations.

Explicit instantiations following specializations are no-ops and hence have
no PointOfInstantiation. That was done correctly in most cases, but for a
specialization -> instantiation decl -> instantiation definition chain, the
definition didn't realize that it was a no-op. Fix that.

Also, when printing diagnostics for these no-ops, get the diag location from
the decl name location.

Add many test cases, one of them not yet passing (but it failed the same way
before this change). Fixes http://llvm.org/pr11558 and more.

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

12 years agofix for PR11634
Anton Yartsev [Fri, 23 Dec 2011 20:23:19 +0000 (20:23 +0000)]
fix for PR11634

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

12 years agoGive C11's __STDC_VERSION__ the final value.
Benjamin Kramer [Fri, 23 Dec 2011 17:00:41 +0000 (17:00 +0000)]
Give C11's __STDC_VERSION__ the final value.

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

12 years agoMass rename C1x references to C11. The name hasn't proliferated like "C++0x" so this...
Benjamin Kramer [Fri, 23 Dec 2011 17:00:35 +0000 (17:00 +0000)]
Mass rename C1x references to C11. The name hasn't proliferated like "C++0x" so this patch is surprisingly small.

Also drop -Wc1x-extensions in favor of -Wc11-extensions. I don't think we need to keep this around for compatibility.

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

12 years agoC1X is now C11, add -std=c11 and -std=gnu11 as aliases for the c1x arguments.
Benjamin Kramer [Fri, 23 Dec 2011 15:28:31 +0000 (15:28 +0000)]
C1X is now C11, add -std=c11 and -std=gnu11 as aliases for the c1x arguments.

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

12 years agoAdd AVX2 multiply intrinsics.
Craig Topper [Fri, 23 Dec 2011 08:31:16 +0000 (08:31 +0000)]
Add AVX2 multiply intrinsics.

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

12 years agoLet CompilerInvocation initialization indicate failure
Dylan Noblesmith [Fri, 23 Dec 2011 03:05:38 +0000 (03:05 +0000)]
Let CompilerInvocation initialization indicate failure

This fixes the FIXMEs in ParseAnalyzeArgs. (Also a
precursor to moving the analyzer into an AST plugin.)

For consistency, do the same with AssemblerInvocation.

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

12 years agoPass context and access to Parser::ParseExplicitInstantiation() for
Argyrios Kyrtzidis [Fri, 23 Dec 2011 02:16:45 +0000 (02:16 +0000)]
Pass context and access to Parser::ParseExplicitInstantiation() for
good parser error recovery and for not crashing.

We still have a accepts-invalid-code bug.

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

12 years agoobjective-c: Use class definition AST in several situations when
Fariborz Jahanian [Fri, 23 Dec 2011 00:31:02 +0000 (00:31 +0000)]
objective-c: Use class definition AST in several situations when
building related objc ASTs which require a class definition AST.
These were uncovered when testing objc rewriter.

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

12 years agoRemove spurious, but now legal, typename
Douglas Gregor [Fri, 23 Dec 2011 00:27:08 +0000 (00:27 +0000)]
Remove spurious, but now legal, typename

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

12 years agoWhen building a module with an umbrella header, warn about any headers
Douglas Gregor [Fri, 23 Dec 2011 00:23:59 +0000 (00:23 +0000)]
When building a module with an umbrella header, warn about any headers
found within that umbrella directory that were not actually included
by the umbrella header. They should either be referenced in the module
map or included by the umbrella header.

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

12 years agoColorize and condense CFG pretty-printing.
Ted Kremenek [Thu, 22 Dec 2011 23:33:52 +0000 (23:33 +0000)]
Colorize and condense CFG pretty-printing.

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

12 years agoAdd -Wdangling-else.
Nico Weber [Thu, 22 Dec 2011 23:26:17 +0000 (23:26 +0000)]
Add -Wdangling-else.

This works like described in  http://drdobbs.com/blogs/cpp/231602010
Fixes http://llvm.org/PR11609

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

12 years agoremove unneeded config.h includes
Dylan Noblesmith [Thu, 22 Dec 2011 22:49:47 +0000 (22:49 +0000)]
remove unneeded config.h includes

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

12 years agoMake a note for an optimization that I'd like to implement, when the ASTs for local...
Douglas Gregor [Thu, 22 Dec 2011 22:05:07 +0000 (22:05 +0000)]
Make a note for an optimization that I'd like to implement, when the ASTs for local externs are sound

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

12 years agoSerialize the AST reader's mapping from canonical declarations to the
Douglas Gregor [Thu, 22 Dec 2011 21:40:42 +0000 (21:40 +0000)]
Serialize the AST reader's mapping from canonical declarations to the
set of (previously-canonical) declaration IDs to the module file, so
that future AST reader instances that load the module know which
declarations are merged. This is important in the fairly tricky case
where a declaration of an entity, e.g.,

  @class X;

occurs before the import of a module that also declares that
entity. We merge the declarations, and record the fact that the
declaration of X loaded from the module was merged into the (now
canonical) declaration of X that we parsed.

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

12 years agoAdd missing triple to darwin clang driver test.
Kevin Enderby [Thu, 22 Dec 2011 21:32:51 +0000 (21:32 +0000)]
Add missing triple to darwin clang driver test.

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

12 years agoFix build under -Wswitch by adding support for FK_ListConstructorOverloadFailed
Nick Lewycky [Thu, 22 Dec 2011 20:21:32 +0000 (20:21 +0000)]
Fix build under -Wswitch by adding support for FK_ListConstructorOverloadFailed
to initialization sequence dumping.

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

12 years agoIf we end up merging an Objective-C class with an existing Objective-C
Douglas Gregor [Thu, 22 Dec 2011 19:44:59 +0000 (19:44 +0000)]
If we end up merging an Objective-C class with an existing Objective-C
class that comes from a different module file, make sure that we load
all of the pending declarations for the original declaration.

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

12 years agoLast part of support for generating dwarf for assembly source files. This gets
Kevin Enderby [Thu, 22 Dec 2011 19:31:58 +0000 (19:31 +0000)]
Last part of support for generating dwarf for assembly source files.  This gets
the clang driver to enable this when assembling a .s file.  rdar://9275556

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

12 years agoOverloading for initializer list construction.
Sebastian Redl [Thu, 22 Dec 2011 18:58:38 +0000 (18:58 +0000)]
Overloading for initializer list construction.

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

12 years agoFix a parser bug that prevented it from correctly parsing explicit construct expresso...
Sebastian Redl [Thu, 22 Dec 2011 18:58:29 +0000 (18:58 +0000)]
Fix a parser bug that prevented it from correctly parsing explicit construct expressoins of the form T{args}.

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

12 years agoList-initialization via constructor part 1. Still needs: pretty-printing, overloading...
Sebastian Redl [Thu, 22 Dec 2011 14:44:04 +0000 (14:44 +0000)]
List-initialization via constructor part 1. Still needs: pretty-printing, overloading, initializer_list.

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

12 years agoAdd AVX2 intrinsics for max, min, sign extend, and zero extend.
Craig Topper [Thu, 22 Dec 2011 09:18:58 +0000 (09:18 +0000)]
Add AVX2 intrinsics for max, min, sign extend, and zero extend.

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

12 years agoDelete stray semicolon.
Eli Friedman [Thu, 22 Dec 2011 06:36:54 +0000 (06:36 +0000)]
Delete stray semicolon.

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

12 years agoFix typos in analyzer diagnostics pointed out by Matt Beaumont-Gay and Robert Purves.
Ted Kremenek [Thu, 22 Dec 2011 06:35:52 +0000 (06:35 +0000)]
Fix typos in analyzer diagnostics pointed out by Matt Beaumont-Gay and Robert Purves.

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

12 years agoIn Lexer::getCharAndSizeSlow[NoWarn] if we come up against
Argyrios Kyrtzidis [Thu, 22 Dec 2011 04:38:07 +0000 (04:38 +0000)]
In Lexer::getCharAndSizeSlow[NoWarn] if we come up against

\<newline><newline>

don't consume the second newline.

Thanks to David Blaikie for pointing out the crash!

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

12 years agoAdd support for bitcasts to vector type in Evaluate.
Eli Friedman [Thu, 22 Dec 2011 03:51:45 +0000 (03:51 +0000)]
Add support for bitcasts to vector type in Evaluate.

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

12 years agoPR11614: Mark defaulted special constructors as constexpr if their implicit
Richard Smith [Thu, 22 Dec 2011 02:22:31 +0000 (02:22 +0000)]
PR11614: Mark defaulted special constructors as constexpr if their implicit
definition would satisfy the constexpr requirements.

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

12 years agoWhen deserializing an Objective-C class, check whether we have another
Douglas Gregor [Thu, 22 Dec 2011 01:48:48 +0000 (01:48 +0000)]
When deserializing an Objective-C class, check whether we have another
declaration of that same class that either came from some other module
or occurred in the translation unit loading the module. In this case,
we need to merge the two redeclaration chains immediately so that all
such declarations have the same canonical declaration in the resulting
AST (even though they don't in the module files we've imported).

Focusing on Objective-C classes until I'm happy with the design, then
I'll both (1) extend this notion to other kinds of declarations, and
(2) optimize away this extra checking when we're not dealing with
modules. For now, doing this checking for PCH files/preambles gives us
better testing coverage.

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

12 years agoEnhance AnalysisDeclContext::getReferencedBlockVars() to understand PseudoObjExprs...
Ted Kremenek [Thu, 22 Dec 2011 01:30:46 +0000 (01:30 +0000)]
Enhance AnalysisDeclContext::getReferencedBlockVars() to understand PseudoObjExprs.  It turns out
that the information collected by this method is a super set of the captured variables in BlockDecl.

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

12 years agoPR11637: implement special-case constant evaluation for char arrays initialized
Richard Smith [Thu, 22 Dec 2011 01:07:19 +0000 (01:07 +0000)]
PR11637: implement special-case constant evaluation for char arrays initialized
by string literals.

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

12 years agoFix regression in LiveVariables when reasoning about variables captured by blocks.
Ted Kremenek [Thu, 22 Dec 2011 00:46:32 +0000 (00:46 +0000)]
Fix regression in LiveVariables when reasoning about variables captured by blocks.

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

12 years agoFix a silly mistake in this test that somehow slipped into my last commit.
Eli Friedman [Thu, 22 Dec 2011 00:06:39 +0000 (00:06 +0000)]
Fix a silly mistake in this test that somehow slipped into my last commit.

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

12 years agoFix a failure (which led to a crash) in constant emission code with vector compound...
Eli Friedman [Thu, 22 Dec 2011 00:04:00 +0000 (00:04 +0000)]
Fix a failure (which led to a crash) in constant emission code with vector compound literals.

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

12 years agoIn Lexer::getCharAndSizeSlow[NoWarn] make sure we don't go over the end of the buffer
Argyrios Kyrtzidis [Wed, 21 Dec 2011 20:19:55 +0000 (20:19 +0000)]
In Lexer::getCharAndSizeSlow[NoWarn] make sure we don't go over the end of the buffer
when the end of the buffer is immediately after an escaped newline.

Fixes http://llvm.org/PR10153.

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

12 years agoobjc, objc rewriter. Fixes couple of bugs one
Fariborz Jahanian [Wed, 21 Dec 2011 19:48:07 +0000 (19:48 +0000)]
objc, objc rewriter. Fixes couple of bugs one
because of recent refactoring and one in the
rewriter.

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

12 years agoImprove CFG pretty-printing for CXXConstructExprs.
Ted Kremenek [Wed, 21 Dec 2011 19:39:59 +0000 (19:39 +0000)]
Improve CFG pretty-printing for CXXConstructExprs.

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

12 years agoCast enumerators from different anonymous enums to unsigned, to appease gcc
Matt Beaumont-Gay [Wed, 21 Dec 2011 19:36:37 +0000 (19:36 +0000)]
Cast enumerators from different anonymous enums to unsigned, to appease gcc

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

12 years agoImprove CFG pretty-printing of CastExprs.
Ted Kremenek [Wed, 21 Dec 2011 19:32:38 +0000 (19:32 +0000)]
Improve CFG pretty-printing of CastExprs.

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

12 years ago[libclang] In visitPreprocessedEntitiesInRange we are interested in a file region
Argyrios Kyrtzidis [Wed, 21 Dec 2011 16:56:38 +0000 (16:56 +0000)]
[libclang] In visitPreprocessedEntitiesInRange we are interested in a file region
so translate the range to file locations.

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

12 years agoFix bugs in SourceManager::computeMacroArgsCache() and add a unit test for it.
Argyrios Kyrtzidis [Wed, 21 Dec 2011 16:56:35 +0000 (16:56 +0000)]
Fix bugs in SourceManager::computeMacroArgsCache() and add a unit test for it.

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

12 years agoFor SourceManager::isBeforeInTranslationUnit(), have it consider macro arg expanded
Argyrios Kyrtzidis [Wed, 21 Dec 2011 16:56:29 +0000 (16:56 +0000)]
For SourceManager::isBeforeInTranslationUnit(), have it consider macro arg expanded
token locations as coming before the closing ')' of a function macro expansion.

Include a unit test for SourceManager.

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

12 years agoImplement a trivial, obvious optimization for deserialization of
Douglas Gregor [Wed, 21 Dec 2011 15:12:03 +0000 (15:12 +0000)]
Implement a trivial, obvious optimization for deserialization of
redeclaration chains: only ever have the reader search for
redeclarations of the first (canonical) declaration, since we only
ever record redeclaration ranges for the that declaration. Searching
for redeclarations of non-canonical declarations will never find
anything, so it's a complete waste of time.

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

12 years agoAdd a few more AVX2 intrinsics and fix the type strings on a couple SSE intrinsics.
Craig Topper [Wed, 21 Dec 2011 08:35:05 +0000 (08:35 +0000)]
Add a few more AVX2 intrinsics and fix the type strings on a couple SSE intrinsics.

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

12 years agoAdd AVX2 horizontal add/sub intrinsics.
Craig Topper [Wed, 21 Dec 2011 08:17:40 +0000 (08:17 +0000)]
Add AVX2 horizontal add/sub intrinsics.

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

12 years agoconstexpr: diagnostic improvements for invalid lvalue-to-rvalue conversions in
Richard Smith [Wed, 21 Dec 2011 05:04:46 +0000 (05:04 +0000)]
constexpr: diagnostic improvements for invalid lvalue-to-rvalue conversions in
constant expressions.

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

12 years agoBump suitable alignment on darwin ppc 32/64 and x86-32 to 16 bytes. I don't
Nick Lewycky [Wed, 21 Dec 2011 04:25:47 +0000 (04:25 +0000)]
Bump suitable alignment on darwin ppc 32/64 and x86-32 to 16 bytes. I don't
actually know about the other OSes on X86-32 besides Linux...

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

12 years agoC++11 half of r147023: In C++11, additionally eagerly instantiate:
Richard Smith [Wed, 21 Dec 2011 02:55:12 +0000 (02:55 +0000)]
C++11 half of r147023: In C++11, additionally eagerly instantiate:
 - constexpr function template instantiations
 - variables of reference type
 - constexpr variables

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

12 years agoAttempt to fix test on 32-bit hosts.
Eli Friedman [Wed, 21 Dec 2011 01:57:31 +0000 (01:57 +0000)]
Attempt to fix test on 32-bit hosts.

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

12 years agoFix a case where Expr::isConstantInitializer would return true for an expression...
Eli Friedman [Wed, 21 Dec 2011 00:43:02 +0000 (00:43 +0000)]
Fix a case where Expr::isConstantInitializer would return true for an expression we can't support.  In a slightly amusing twist, the case in question was already in the clang regression tests marked as a valid construct.  <rdar://problem/10020074>

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

12 years agoC++ constant expression handling: eagerly instantiate static const integral data
Richard Smith [Wed, 21 Dec 2011 00:25:33 +0000 (00:25 +0000)]
C++ constant expression handling: eagerly instantiate static const integral data
members of class templates so that their values can be used in ICEs. This
required reverting r105465, to get such instantiated members to be included in
serialized ASTs.

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

12 years agoobjc QOI: Don't't warn about mismatch between attributes
Fariborz Jahanian [Wed, 21 Dec 2011 00:09:11 +0000 (00:09 +0000)]
objc QOI: Don't't warn about mismatch between attributes
on method declaration and definition if former is in
a system header. // rdar://10580333

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

12 years agoPR11297: Provide a better diagnostic for code which contains a
Richard Smith [Tue, 20 Dec 2011 22:56:20 +0000 (22:56 +0000)]
PR11297: Provide a better diagnostic for code which contains a
reasonable-looking but ill-formed for-range statement of the form:

  for (expression : expression)

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

12 years ago[analyzer] Do not invalidate arguments when the parameter's
Anna Zaks [Tue, 20 Dec 2011 22:35:30 +0000 (22:35 +0000)]
[analyzer] Do not invalidate arguments when the parameter's
type is a pointer to const. (radar://10595327)

The regions corresponding to the pointer and reference arguments to
a function get invalidated by the calls since a function call can
possibly modify the pointed to data. With this change, we are not going
to invalidate the data if the argument is a pointer to const. This
change makes the analyzer more optimistic in reporting errors.
(Support for C, C++ and Obj C)

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

12 years agoobjc/c++: Issue diagnostic when free-standing ivar is accessed
Fariborz Jahanian [Tue, 20 Dec 2011 22:21:08 +0000 (22:21 +0000)]
objc/c++: Issue diagnostic when free-standing ivar is accessed
in class method instead of crash. // rdar://10593227

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

12 years agoWhen we make a previously-deserialized module definition visible,
Douglas Gregor [Tue, 20 Dec 2011 22:06:13 +0000 (22:06 +0000)]
When we make a previously-deserialized module definition visible,
notify the AST deserialization listener so that the AST writer knows
that it can write the macro definition.

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

12 years agoFix inversion of static analyzer path diagnostics for path conditions.
Ted Kremenek [Tue, 20 Dec 2011 22:00:25 +0000 (22:00 +0000)]
Fix inversion of static analyzer path diagnostics for path conditions.

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

12 years agoFix a crash on invalid, http://llvm.org/pr11599
Nico Weber [Tue, 20 Dec 2011 20:32:49 +0000 (20:32 +0000)]
Fix a crash on invalid, http://llvm.org/pr11599

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

12 years agoLet the KNR promotion warning be disabled.
Roman Divacky [Tue, 20 Dec 2011 18:35:44 +0000 (18:35 +0000)]
Let the KNR promotion warning be disabled.

Patch by Dimitry Andric!

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

12 years agoWhen performing name lookup for a redeclaration, ignore module
Douglas Gregor [Tue, 20 Dec 2011 18:11:52 +0000 (18:11 +0000)]
When performing name lookup for a redeclaration, ignore module
visibility restrictions. This ensures that all declarations of the
same entity end up in the same redeclaration chain, even if some of
those declarations aren't visible. While this may seem unfortunate to
some---why can't two C modules have different functions named
'f'?---it's an acknowedgment that a module does not introduce a new
"namespace" of names.

As part of this, stop merging the 'module-private' bit from previous
declarations to later declarations, because we want each declaration
in a module to stand on its own because this can effect, for example,
submodule visibility.

Note that this notion of names that are invisible to normal name
lookup but are available for redeclaration lookups is how we should
implement friend declarations and extern declarations within local
function scopes. I'm not tackling that problem now.

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

12 years agoWhen performing layout for an Objective-C class, make sure to dig out
Douglas Gregor [Tue, 20 Dec 2011 15:50:13 +0000 (15:50 +0000)]
When performing layout for an Objective-C class, make sure to dig out
the definition of that class. Fixes PR11613 / <rdar://problem/10604077>.

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

12 years agoAdd AVX2 intrinsics for pavg, pblend, and pcmp instructions. Also remove unneeded...
Craig Topper [Tue, 20 Dec 2011 09:55:26 +0000 (09:55 +0000)]
Add AVX2 intrinsics for pavg, pblend, and pcmp instructions. Also remove unneeded builtins for SSE pcmp. Change SSE pcmpeqq and pcmpgtq to not use builtins and just use vector == and >.

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

12 years agoUpdate the CMake build for r146959's new files.
Chandler Carruth [Tue, 20 Dec 2011 08:42:15 +0000 (08:42 +0000)]
Update the CMake build for r146959's new files.

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

12 years agoRelax type checking for a few Neon intrinsics. <rdar://problem/10538555>
Bob Wilson [Tue, 20 Dec 2011 06:16:48 +0000 (06:16 +0000)]
Relax type checking for a few Neon intrinsics.  <rdar://problem/10538555>

Not long ago, I tightened up the type checking for pointer arguments of
Neon intrinsics to match the specifications provided by ARM.  One consequence
was that it became impossible to access the unaligned versions of a few
Neon load/store operations.  Since there are just a few of these intrinsics
where it makes a difference, I think it's better to relax the type checking
than to either introduce new non-standard unaligned intrinsics or to disallow
intrinsics for the unaligned operations.

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

12 years agoFix off-by-one error in an assert condition. No functionality change, but better
Richard Smith [Tue, 20 Dec 2011 04:39:57 +0000 (04:39 +0000)]
Fix off-by-one error in an assert condition. No functionality change, but better
error detection.

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

12 years agoRevert r146766, and add a testcase for which it introduced a wrong-code bug.
Richard Smith [Tue, 20 Dec 2011 04:00:21 +0000 (04:00 +0000)]
Revert r146766, and add a testcase for which it introduced a wrong-code bug.

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

12 years agoUnweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
David Blaikie [Tue, 20 Dec 2011 02:48:34 +0000 (02:48 +0000)]
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch

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

12 years agoUnlike in C++03, a constant-expression is not an unevaluated operand in C++11.
Richard Smith [Tue, 20 Dec 2011 02:08:33 +0000 (02:08 +0000)]
Unlike in C++03, a constant-expression is not an unevaluated operand in C++11.
Split out a new ExpressionEvaluationContext flag for this case, and don't treat
it as unevaluated in C++11. This fixes some crash-on-invalids where we would
allow references to class members in potentially-evaluated constant expressions
in static member functions, and also fixes half of PR10177.

The fix to PR10177 exposed a case where template instantiation failed to provide
a source location for a diagnostic, so TreeTransform has been tweaked to supply
source locations when transforming a type. The source location is still not very
good, but MarkDeclarationsReferencedInType would need to operate on a TypeLoc to
improve it further.

Also fix MarkDeclarationReferenced in C++98 mode to trigger instantiation for
static data members of class templates which are used in constant expressions.
This fixes a link-time problem, but we still incorrectly treat the member as
non-constant. The rest of the fix for that issue is blocked on PCH support for
early-instantiated static data members, which will be added in a subsequent
patch.

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